@hasna/connectors 0.5.4 → 0.5.6
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/bin/index.js +132 -43
- package/bin/mcp.js +10 -10
- package/package.json +1 -1
package/bin/index.js
CHANGED
|
@@ -7281,7 +7281,7 @@ var PRESETS = {
|
|
|
7281
7281
|
commerce: { description: "Commerce and finance", connectors: ["stripe", "shopify", "revolut", "mercury", "pandadoc"] }
|
|
7282
7282
|
};
|
|
7283
7283
|
var program2 = new Command;
|
|
7284
|
-
program2.name("connectors").description("Install API connectors for your project").version("0.5.
|
|
7284
|
+
program2.name("connectors").description("Install API connectors for your project").version("0.5.6").enablePositionalOptions();
|
|
7285
7285
|
program2.command("interactive", { isDefault: true }).alias("i").description("Interactive connector browser").action(() => {
|
|
7286
7286
|
if (!isTTY) {
|
|
7287
7287
|
console.log(`Non-interactive environment detected. Use a subcommand:
|
|
@@ -7646,10 +7646,11 @@ program2.command("info").argument("<connector>", "Connector name").option("--jso
|
|
|
7646
7646
|
const meta = getConnector(connector);
|
|
7647
7647
|
if (!meta) {
|
|
7648
7648
|
if (options.json) {
|
|
7649
|
-
console.log(JSON.stringify({ error: `Connector '${connector}' not found
|
|
7649
|
+
console.log(JSON.stringify({ error: `Connector '${connector}' not found. Run 'connectors list' to see available connectors.` }));
|
|
7650
7650
|
process.exit(1);
|
|
7651
7651
|
}
|
|
7652
7652
|
console.log(chalk2.red(`Connector '${connector}' not found`));
|
|
7653
|
+
console.log(chalk2.dim(`Run 'connectors list' to see available connectors, or 'connectors search ${connector}' to search.`));
|
|
7653
7654
|
process.exit(1);
|
|
7654
7655
|
return;
|
|
7655
7656
|
}
|
|
@@ -7674,9 +7675,10 @@ program2.command("docs").argument("<connector>", "Connector name").option("--jso
|
|
|
7674
7675
|
const meta = getConnector(connector);
|
|
7675
7676
|
if (!meta) {
|
|
7676
7677
|
if (options.json) {
|
|
7677
|
-
console.log(JSON.stringify({ error: `Connector '${connector}' not found
|
|
7678
|
+
console.log(JSON.stringify({ error: `Connector '${connector}' not found. Run 'connectors list' to see available connectors.` }));
|
|
7678
7679
|
} else {
|
|
7679
7680
|
console.log(chalk2.red(`Connector '${connector}' not found`));
|
|
7681
|
+
console.log(chalk2.dim(`Run 'connectors list' to see available connectors, or 'connectors search ${connector}' to search.`));
|
|
7680
7682
|
}
|
|
7681
7683
|
process.exit(1);
|
|
7682
7684
|
return;
|
|
@@ -7684,9 +7686,10 @@ program2.command("docs").argument("<connector>", "Connector name").option("--jso
|
|
|
7684
7686
|
const docs = getConnectorDocs(connector);
|
|
7685
7687
|
if (!docs) {
|
|
7686
7688
|
if (options.json) {
|
|
7687
|
-
console.log(JSON.stringify({ error: `No documentation found for '${connector}'
|
|
7689
|
+
console.log(JSON.stringify({ error: `No documentation found for '${connector}'. The connector may not be installed yet. Run 'connectors install ${connector}' first.` }));
|
|
7688
7690
|
} else {
|
|
7689
7691
|
console.log(chalk2.red(`No documentation found for '${connector}'`));
|
|
7692
|
+
console.log(chalk2.dim(`The connector may not be installed yet. Run 'connectors install ${connector}' first.`));
|
|
7690
7693
|
}
|
|
7691
7694
|
process.exit(1);
|
|
7692
7695
|
return;
|
|
@@ -7763,6 +7766,7 @@ program2.command("remove").alias("rm").argument("<connector>", "Connector to rem
|
|
|
7763
7766
|
console.log(chalk2.green(`\u2713 Removed ${connector}`));
|
|
7764
7767
|
} else {
|
|
7765
7768
|
console.log(chalk2.red(`\u2717 ${connector} is not installed`));
|
|
7769
|
+
console.log(chalk2.dim(`Run 'connectors install ${connector}' to install it, or 'connectors list --installed' to see installed connectors.`));
|
|
7766
7770
|
process.exit(1);
|
|
7767
7771
|
}
|
|
7768
7772
|
});
|
|
@@ -7814,7 +7818,7 @@ program2.command("update").argument("[connectors...]", "Specific connectors to u
|
|
|
7814
7818
|
console.log(JSON.stringify({ error: `Not installed: ${notInstalled.join(", ")}` }));
|
|
7815
7819
|
} else {
|
|
7816
7820
|
console.log(chalk2.red(`Not installed: ${notInstalled.join(", ")}`));
|
|
7817
|
-
console.log(chalk2.dim(
|
|
7821
|
+
console.log(chalk2.dim(`Run 'connectors install ${notInstalled[0]}' to install, or 'connectors list --installed' to see installed connectors.`));
|
|
7818
7822
|
}
|
|
7819
7823
|
process.exit(1);
|
|
7820
7824
|
return;
|
|
@@ -7867,19 +7871,21 @@ Updating ${toUpdate.length} connector(s)...
|
|
|
7867
7871
|
}
|
|
7868
7872
|
process.exit(results.every((r) => r.success) ? 0 : 1);
|
|
7869
7873
|
});
|
|
7870
|
-
program2.command("status").option("--json", "Output as JSON", false).description("Show auth status of
|
|
7874
|
+
program2.command("status").option("--json", "Output as JSON", false).description("Show auth status of all configured connectors (project + global)").action((options) => {
|
|
7871
7875
|
const installed = getInstalledConnectors();
|
|
7872
|
-
|
|
7873
|
-
|
|
7874
|
-
|
|
7875
|
-
|
|
7876
|
-
console.log(chalk2.dim("No connectors installed. Run: connectors install <name>"));
|
|
7877
|
-
}
|
|
7878
|
-
return;
|
|
7879
|
-
}
|
|
7880
|
-
const statuses = installed.map((name) => {
|
|
7881
|
-
const meta = getConnector(name);
|
|
7876
|
+
const configDir = join6(homedir3(), ".connectors");
|
|
7877
|
+
const seen = new Set;
|
|
7878
|
+
const allStatuses = [];
|
|
7879
|
+
function buildStatusEntry(name, source) {
|
|
7882
7880
|
const auth = getAuthStatus(name);
|
|
7881
|
+
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
7882
|
+
const currentProfileFile = join6(configDir, connectorName, "current_profile");
|
|
7883
|
+
let profile = "default";
|
|
7884
|
+
if (existsSync6(currentProfileFile)) {
|
|
7885
|
+
try {
|
|
7886
|
+
profile = readFileSync5(currentProfileFile, "utf-8").trim() || "default";
|
|
7887
|
+
} catch {}
|
|
7888
|
+
}
|
|
7883
7889
|
let expiryLabel = null;
|
|
7884
7890
|
let expired = false;
|
|
7885
7891
|
if (auth.type === "oauth" && auth.tokenExpiry) {
|
|
@@ -7899,43 +7905,117 @@ program2.command("status").option("--json", "Output as JSON", false).description
|
|
|
7899
7905
|
}
|
|
7900
7906
|
return {
|
|
7901
7907
|
name,
|
|
7902
|
-
category: meta?.category || "Unknown",
|
|
7903
7908
|
authType: auth.type,
|
|
7904
7909
|
configured: auth.configured,
|
|
7910
|
+
profile,
|
|
7905
7911
|
expired,
|
|
7906
7912
|
expiryLabel,
|
|
7907
7913
|
tokenExpiry: auth.tokenExpiry || null,
|
|
7908
|
-
hasRefreshToken: auth.hasRefreshToken || false
|
|
7914
|
+
hasRefreshToken: auth.hasRefreshToken || false,
|
|
7915
|
+
source
|
|
7909
7916
|
};
|
|
7910
|
-
}
|
|
7917
|
+
}
|
|
7918
|
+
for (const name of installed) {
|
|
7919
|
+
seen.add(name);
|
|
7920
|
+
allStatuses.push(buildStatusEntry(name, "project"));
|
|
7921
|
+
}
|
|
7922
|
+
if (existsSync6(configDir)) {
|
|
7923
|
+
try {
|
|
7924
|
+
const globalDirs = readdirSync4(configDir).filter((f) => {
|
|
7925
|
+
if (!f.startsWith("connect-"))
|
|
7926
|
+
return false;
|
|
7927
|
+
try {
|
|
7928
|
+
return statSync3(join6(configDir, f)).isDirectory();
|
|
7929
|
+
} catch {
|
|
7930
|
+
return false;
|
|
7931
|
+
}
|
|
7932
|
+
});
|
|
7933
|
+
for (const dir of globalDirs) {
|
|
7934
|
+
const name = dir.replace("connect-", "");
|
|
7935
|
+
if (seen.has(name))
|
|
7936
|
+
continue;
|
|
7937
|
+
seen.add(name);
|
|
7938
|
+
allStatuses.push(buildStatusEntry(name, "global"));
|
|
7939
|
+
}
|
|
7940
|
+
} catch {}
|
|
7941
|
+
}
|
|
7942
|
+
if (allStatuses.length === 0) {
|
|
7943
|
+
if (options.json) {
|
|
7944
|
+
console.log(JSON.stringify({ configured: [], unconfigured: [], summary: { total: 0, configured: 0, unconfigured: 0 } }, null, 2));
|
|
7945
|
+
} else {
|
|
7946
|
+
console.log(chalk2.dim("No connectors found. Run: connectors install <name>"));
|
|
7947
|
+
}
|
|
7948
|
+
return;
|
|
7949
|
+
}
|
|
7950
|
+
const configuredList = allStatuses.filter((s) => s.configured);
|
|
7951
|
+
const unconfiguredList = allStatuses.filter((s) => !s.configured);
|
|
7911
7952
|
if (options.json) {
|
|
7912
|
-
console.log(JSON.stringify(
|
|
7953
|
+
console.log(JSON.stringify({
|
|
7954
|
+
configured: configuredList,
|
|
7955
|
+
unconfigured: unconfiguredList,
|
|
7956
|
+
summary: {
|
|
7957
|
+
total: allStatuses.length,
|
|
7958
|
+
configured: configuredList.length,
|
|
7959
|
+
unconfigured: unconfiguredList.length
|
|
7960
|
+
}
|
|
7961
|
+
}, null, 2));
|
|
7913
7962
|
return;
|
|
7914
7963
|
}
|
|
7915
|
-
const nameWidth = Math.max(6, ...
|
|
7916
|
-
const catWidth = Math.max(10, ...statuses.map((s) => s.category.length)) + 2;
|
|
7964
|
+
const nameWidth = Math.max(6, ...allStatuses.map((s) => s.name.length)) + 2;
|
|
7917
7965
|
const authWidth = 10;
|
|
7918
|
-
|
|
7919
|
-
|
|
7920
|
-
`));
|
|
7921
|
-
console.log(` ${chalk2.dim("Name".padEnd(nameWidth))}` + `${chalk2.dim("Category".padEnd(catWidth))}` + `${chalk2.dim("Auth Type".padEnd(authWidth))}` + `${chalk2.dim("Status")}`);
|
|
7922
|
-
console.log(chalk2.dim(` ${"\u2500".repeat(nameWidth + catWidth + authWidth + 24)}`));
|
|
7923
|
-
for (const s of statuses) {
|
|
7966
|
+
const profileWidth = Math.max(8, ...allStatuses.map((s) => s.profile.length)) + 2;
|
|
7967
|
+
function printRow(s) {
|
|
7924
7968
|
const authTypeLabel = s.authType === "oauth" ? "OAuth" : s.authType === "apikey" ? "API Key" : "Bearer";
|
|
7925
7969
|
let statusLabel;
|
|
7926
7970
|
if (s.configured && s.expired) {
|
|
7927
|
-
statusLabel = chalk2.yellow("
|
|
7971
|
+
statusLabel = chalk2.yellow("expired");
|
|
7928
7972
|
} else if (s.configured) {
|
|
7929
|
-
statusLabel = chalk2.green("
|
|
7973
|
+
statusLabel = chalk2.green("yes");
|
|
7930
7974
|
} else {
|
|
7931
|
-
statusLabel = chalk2.red("
|
|
7975
|
+
statusLabel = chalk2.red("no");
|
|
7932
7976
|
}
|
|
7977
|
+
const profileLabel = s.profile.padEnd(profileWidth);
|
|
7933
7978
|
let expiryStr = "";
|
|
7934
|
-
if (s.
|
|
7935
|
-
|
|
7979
|
+
if (s.authType === "oauth") {
|
|
7980
|
+
if (s.expired) {
|
|
7981
|
+
expiryStr = chalk2.yellow("Expired");
|
|
7982
|
+
} else if (s.expiryLabel && s.configured) {
|
|
7983
|
+
expiryStr = chalk2.dim(s.expiryLabel);
|
|
7984
|
+
} else {
|
|
7985
|
+
expiryStr = chalk2.dim("-");
|
|
7986
|
+
}
|
|
7987
|
+
} else {
|
|
7988
|
+
expiryStr = chalk2.dim("-");
|
|
7989
|
+
}
|
|
7990
|
+
const sourceLabel = s.source === "global" ? chalk2.dim(" (global)") : "";
|
|
7991
|
+
console.log(` ${chalk2.cyan(s.name.padEnd(nameWidth))}` + `${authTypeLabel.padEnd(authWidth)}` + `${statusLabel.padEnd(16)}` + `${profileLabel}` + `${expiryStr}${sourceLabel}`);
|
|
7992
|
+
}
|
|
7993
|
+
function printHeader() {
|
|
7994
|
+
console.log(` ${chalk2.dim("Name".padEnd(nameWidth))}` + `${chalk2.dim("Auth".padEnd(authWidth))}` + `${chalk2.dim("Configured".padEnd(16))}` + `${chalk2.dim("Profile".padEnd(profileWidth))}` + `${chalk2.dim("Expiry")}`);
|
|
7995
|
+
console.log(chalk2.dim(` ${"\u2500".repeat(nameWidth + authWidth + 16 + profileWidth + 12)}`));
|
|
7996
|
+
}
|
|
7997
|
+
console.log(chalk2.bold(`
|
|
7998
|
+
Connector Status
|
|
7999
|
+
`));
|
|
8000
|
+
if (configuredList.length > 0) {
|
|
8001
|
+
console.log(chalk2.green.bold(` Configured (${configuredList.length})
|
|
8002
|
+
`));
|
|
8003
|
+
printHeader();
|
|
8004
|
+
for (const s of configuredList) {
|
|
8005
|
+
printRow(s);
|
|
8006
|
+
}
|
|
8007
|
+
console.log();
|
|
8008
|
+
}
|
|
8009
|
+
if (unconfiguredList.length > 0) {
|
|
8010
|
+
console.log(chalk2.red.bold(` Unconfigured (${unconfiguredList.length})
|
|
8011
|
+
`));
|
|
8012
|
+
printHeader();
|
|
8013
|
+
for (const s of unconfiguredList) {
|
|
8014
|
+
printRow(s);
|
|
7936
8015
|
}
|
|
7937
|
-
console.log(
|
|
8016
|
+
console.log();
|
|
7938
8017
|
}
|
|
8018
|
+
console.log(chalk2.dim(` Total: ${allStatuses.length} | Configured: ${configuredList.length} | Unconfigured: ${unconfiguredList.length}`));
|
|
7939
8019
|
console.log();
|
|
7940
8020
|
});
|
|
7941
8021
|
program2.command("doctor").option("--json", "Output as JSON", false).description("Check all installed connectors for issues and output a health report").action((options) => {
|
|
@@ -8054,9 +8134,10 @@ program2.command("auth").argument("<connector>", "Connector name to configure au
|
|
|
8054
8134
|
const meta = getConnector(connector);
|
|
8055
8135
|
if (!meta) {
|
|
8056
8136
|
if (options.json) {
|
|
8057
|
-
console.log(JSON.stringify({ error: `Connector '${connector}' not found
|
|
8137
|
+
console.log(JSON.stringify({ error: `Connector '${connector}' not found. Run 'connectors list' to see available connectors.` }));
|
|
8058
8138
|
} else {
|
|
8059
8139
|
console.log(chalk2.red(`Connector '${connector}' not found`));
|
|
8140
|
+
console.log(chalk2.dim(`Run 'connectors list' to see available connectors, or 'connectors search ${connector}' to search.`));
|
|
8060
8141
|
}
|
|
8061
8142
|
process.exit(1);
|
|
8062
8143
|
return;
|
|
@@ -8960,9 +9041,10 @@ program2.command("test").argument("[connector]", "Connector to test (default: al
|
|
|
8960
9041
|
if (connector) {
|
|
8961
9042
|
if (!getConnector(connector)) {
|
|
8962
9043
|
if (options.json) {
|
|
8963
|
-
console.log(JSON.stringify({ error: `Connector '${connector}' not found
|
|
9044
|
+
console.log(JSON.stringify({ error: `Connector '${connector}' not found. Run 'connectors list' to see available connectors.` }));
|
|
8964
9045
|
} else {
|
|
8965
9046
|
console.log(chalk2.red(`Connector '${connector}' not found`));
|
|
9047
|
+
console.log(chalk2.dim(`Run 'connectors list' to see available connectors, or 'connectors search ${connector}' to search.`));
|
|
8966
9048
|
}
|
|
8967
9049
|
process.exit(1);
|
|
8968
9050
|
return;
|
|
@@ -8988,15 +9070,15 @@ Testing connector credentials...
|
|
|
8988
9070
|
const auth = getAuthStatus(name);
|
|
8989
9071
|
const endpoint = TEST_ENDPOINTS[name];
|
|
8990
9072
|
if (!auth.configured) {
|
|
8991
|
-
results.push({ name, status: "no-key", message:
|
|
9073
|
+
results.push({ name, status: "no-key", message: `No credentials configured. Run 'connectors auth ${name}' or 'connectors setup ${name} --key <your-key>'` });
|
|
8992
9074
|
if (!options.json)
|
|
8993
|
-
console.log(` ${chalk2.dim("\u25CB")} ${chalk2.dim(name)} \u2014 ${chalk2.dim(
|
|
9075
|
+
console.log(` ${chalk2.dim("\u25CB")} ${chalk2.dim(name)} \u2014 ${chalk2.dim(`no credentials configured \u2014 run 'connectors auth ${name}'`)}`);
|
|
8994
9076
|
continue;
|
|
8995
9077
|
}
|
|
8996
9078
|
if (!endpoint) {
|
|
8997
|
-
results.push({ name, status: "skip", message:
|
|
9079
|
+
results.push({ name, status: "skip", message: `No test endpoint defined. Run 'connectors ops ${name}' to see available operations` });
|
|
8998
9080
|
if (!options.json)
|
|
8999
|
-
console.log(` ${chalk2.dim("\u25CB")} ${chalk2.dim(name)} \u2014 ${chalk2.dim(
|
|
9081
|
+
console.log(` ${chalk2.dim("\u25CB")} ${chalk2.dim(name)} \u2014 ${chalk2.dim(`no test endpoint \u2014 run 'connectors ops ${name}' to see operations`)}`);
|
|
9000
9082
|
continue;
|
|
9001
9083
|
}
|
|
9002
9084
|
const docs = getConnectorDocs(name);
|
|
@@ -9089,10 +9171,12 @@ Testing connector credentials...
|
|
|
9089
9171
|
console.log(` ${chalk2.green("\u2713")} ${chalk2.green(name)} \u2014 ${chalk2.dim(`${res.status} OK`)} ${chalk2.dim(`(${ms}ms)`)}`);
|
|
9090
9172
|
} else {
|
|
9091
9173
|
const body2 = await res.text().catch(() => "");
|
|
9092
|
-
const msg = res.status === 401 ?
|
|
9174
|
+
const msg = res.status === 401 ? `Invalid or expired credentials. Run 'connectors auth ${name}' to reconfigure` : `HTTP ${res.status}`;
|
|
9093
9175
|
results.push({ name, status: "fail", message: msg, ms });
|
|
9094
9176
|
if (!options.json)
|
|
9095
|
-
console.log(` ${chalk2.red("\u2717")} ${chalk2.red(name)} \u2014 ${chalk2.red(
|
|
9177
|
+
console.log(` ${chalk2.red("\u2717")} ${chalk2.red(name)} \u2014 ${chalk2.red(res.status === 401 ? "Invalid or expired credentials" : `HTTP ${res.status}`)} ${chalk2.dim(`(${ms}ms)`)}`);
|
|
9178
|
+
if (!options.json && res.status === 401)
|
|
9179
|
+
console.log(chalk2.dim(` \u2192 Run 'connectors auth ${name}' to reconfigure credentials`));
|
|
9096
9180
|
}
|
|
9097
9181
|
} catch (e) {
|
|
9098
9182
|
const ms = Date.now() - start;
|
|
@@ -9125,10 +9209,12 @@ program2.command("ops").description("List available API operations for a connect
|
|
|
9125
9209
|
const meta = getConnector(name);
|
|
9126
9210
|
if (!meta) {
|
|
9127
9211
|
console.error(chalk2.red(`Connector '${name}' not found.`));
|
|
9212
|
+
console.error(chalk2.dim(`Run 'connectors list' to see available connectors, or 'connectors search ${name}' to search.`));
|
|
9128
9213
|
process.exit(1);
|
|
9129
9214
|
}
|
|
9130
9215
|
if (!getConnectorCliPath(name)) {
|
|
9131
9216
|
console.error(chalk2.red(`Connector '${name}' does not have a CLI.`));
|
|
9217
|
+
console.error(chalk2.dim(`Run 'connectors docs ${name}' to see how to use this connector programmatically.`));
|
|
9132
9218
|
process.exit(1);
|
|
9133
9219
|
}
|
|
9134
9220
|
if (command) {
|
|
@@ -9171,10 +9257,12 @@ program2.command("run").description("Execute an API operation on a connector").a
|
|
|
9171
9257
|
const meta = getConnector(name);
|
|
9172
9258
|
if (!meta) {
|
|
9173
9259
|
console.error(chalk2.red(`Connector '${name}' not found.`));
|
|
9260
|
+
console.error(chalk2.dim(`Run 'connectors list' to see available connectors, or 'connectors search ${name}' to search.`));
|
|
9174
9261
|
process.exit(1);
|
|
9175
9262
|
}
|
|
9176
9263
|
if (!getConnectorCliPath(name)) {
|
|
9177
9264
|
console.error(chalk2.red(`Connector '${name}' does not have a CLI.`));
|
|
9265
|
+
console.error(chalk2.dim(`Run 'connectors docs ${name}' to see how to use this connector programmatically.`));
|
|
9178
9266
|
process.exit(1);
|
|
9179
9267
|
}
|
|
9180
9268
|
if (args.length === 0) {
|
|
@@ -9194,9 +9282,10 @@ program2.command("setup").argument("<name>", "Connector name to set up").option(
|
|
|
9194
9282
|
const meta = getConnector(name);
|
|
9195
9283
|
if (!meta) {
|
|
9196
9284
|
if (options.json) {
|
|
9197
|
-
console.log(JSON.stringify({ error: `Connector '${name}' not found
|
|
9285
|
+
console.log(JSON.stringify({ error: `Connector '${name}' not found. Run 'connectors list' to see available connectors.` }));
|
|
9198
9286
|
} else {
|
|
9199
9287
|
console.log(chalk2.red(`Connector '${name}' not found`));
|
|
9288
|
+
console.log(chalk2.dim(`Run 'connectors list' to see available connectors, or 'connectors search ${name}' to search.`));
|
|
9200
9289
|
}
|
|
9201
9290
|
process.exit(1);
|
|
9202
9291
|
return;
|
package/bin/mcp.js
CHANGED
|
@@ -20763,7 +20763,7 @@ async function getConnectorCommandHelp(name, command) {
|
|
|
20763
20763
|
loadConnectorVersions();
|
|
20764
20764
|
var server = new McpServer({
|
|
20765
20765
|
name: "connectors",
|
|
20766
|
-
version: "0.5.
|
|
20766
|
+
version: "0.5.6"
|
|
20767
20767
|
});
|
|
20768
20768
|
server.registerTool("search_connectors", {
|
|
20769
20769
|
title: "Search Connectors",
|
|
@@ -20802,7 +20802,7 @@ server.registerTool("list_connectors", {
|
|
|
20802
20802
|
content: [
|
|
20803
20803
|
{
|
|
20804
20804
|
type: "text",
|
|
20805
|
-
text: `Unknown category: "${category}".
|
|
20805
|
+
text: `Unknown category: "${category}". Use list_categories to see available categories: ${CATEGORIES.join(", ")}`
|
|
20806
20806
|
}
|
|
20807
20807
|
],
|
|
20808
20808
|
isError: true
|
|
@@ -20832,14 +20832,14 @@ server.registerTool("connector_docs", {
|
|
|
20832
20832
|
const meta = getConnector(name);
|
|
20833
20833
|
if (!meta) {
|
|
20834
20834
|
return {
|
|
20835
|
-
content: [{ type: "text", text: `Connector '${name}' not found.` }],
|
|
20835
|
+
content: [{ type: "text", text: `Connector '${name}' not found. Use search_connectors or list_connectors to find available connectors.` }],
|
|
20836
20836
|
isError: true
|
|
20837
20837
|
};
|
|
20838
20838
|
}
|
|
20839
20839
|
const docs = getConnectorDocs(name);
|
|
20840
20840
|
if (!docs) {
|
|
20841
20841
|
return {
|
|
20842
|
-
content: [{ type: "text", text: `No documentation found for '${name}'.` }],
|
|
20842
|
+
content: [{ type: "text", text: `No documentation found for '${name}'. Use install_connector to install it first.` }],
|
|
20843
20843
|
isError: true
|
|
20844
20844
|
};
|
|
20845
20845
|
}
|
|
@@ -20921,7 +20921,7 @@ server.registerTool("connector_info", {
|
|
|
20921
20921
|
const meta = getConnector(name);
|
|
20922
20922
|
if (!meta) {
|
|
20923
20923
|
return {
|
|
20924
|
-
content: [{ type: "text", text: `Connector '${name}' not found.` }],
|
|
20924
|
+
content: [{ type: "text", text: `Connector '${name}' not found. Use search_connectors or list_connectors to find available connectors.` }],
|
|
20925
20925
|
isError: true
|
|
20926
20926
|
};
|
|
20927
20927
|
}
|
|
@@ -20944,7 +20944,7 @@ server.registerTool("connector_auth_status", {
|
|
|
20944
20944
|
const meta = getConnector(name);
|
|
20945
20945
|
if (!meta) {
|
|
20946
20946
|
return {
|
|
20947
|
-
content: [{ type: "text", text: `Connector '${name}' not found.` }],
|
|
20947
|
+
content: [{ type: "text", text: `Connector '${name}' not found. Use search_connectors or list_connectors to find available connectors.` }],
|
|
20948
20948
|
isError: true
|
|
20949
20949
|
};
|
|
20950
20950
|
}
|
|
@@ -21022,7 +21022,7 @@ server.registerTool("list_connector_operations", {
|
|
|
21022
21022
|
const meta = getConnector(name);
|
|
21023
21023
|
if (!meta) {
|
|
21024
21024
|
return {
|
|
21025
|
-
content: [{ type: "text", text: `Connector '${name}' not found.` }],
|
|
21025
|
+
content: [{ type: "text", text: `Connector '${name}' not found. Use search_connectors or list_connectors to find available connectors.` }],
|
|
21026
21026
|
isError: true
|
|
21027
21027
|
};
|
|
21028
21028
|
}
|
|
@@ -21031,7 +21031,7 @@ server.registerTool("list_connector_operations", {
|
|
|
21031
21031
|
content: [
|
|
21032
21032
|
{
|
|
21033
21033
|
type: "text",
|
|
21034
|
-
text: `Connector '${name}' does not have a CLI. It may be API-only.`
|
|
21034
|
+
text: `Connector '${name}' does not have a CLI. It may be API-only. Use connector_docs to see how to use it programmatically.`
|
|
21035
21035
|
}
|
|
21036
21036
|
],
|
|
21037
21037
|
isError: true
|
|
@@ -21076,7 +21076,7 @@ server.registerTool("run_connector_operation", {
|
|
|
21076
21076
|
const meta = getConnector(name);
|
|
21077
21077
|
if (!meta) {
|
|
21078
21078
|
return {
|
|
21079
|
-
content: [{ type: "text", text: `Connector '${name}' not found.` }],
|
|
21079
|
+
content: [{ type: "text", text: `Connector '${name}' not found. Use search_connectors or list_connectors to find available connectors.` }],
|
|
21080
21080
|
isError: true
|
|
21081
21081
|
};
|
|
21082
21082
|
}
|
|
@@ -21132,7 +21132,7 @@ server.registerTool("setup_connector", {
|
|
|
21132
21132
|
const meta = getConnector(name);
|
|
21133
21133
|
if (!meta) {
|
|
21134
21134
|
return {
|
|
21135
|
-
content: [{ type: "text", text: `Connector '${name}' not found.` }],
|
|
21135
|
+
content: [{ type: "text", text: `Connector '${name}' not found. Use search_connectors or list_connectors to find available connectors.` }],
|
|
21136
21136
|
isError: true
|
|
21137
21137
|
};
|
|
21138
21138
|
}
|