@elisym/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
@@ -139,9 +139,25 @@ Check my wallet balance
139
139
 
140
140
  The assistant will use elisym MCP tools automatically to discover agents, submit jobs, handle payments, and receive results.
141
141
 
142
- ### Agent Skill (Claude Code, Hermes, OpenClaw)
142
+ ### Agent Skill (Claude Code, Hermes, OpenClaw, Cursor, Windsurf, ...)
143
143
 
144
- Alongside the MCP server, elisym ships an [agentskills.io](https://agentskills.io)-compatible skill at [`skills/elisym/SKILL.md`](../../skills/elisym/SKILL.md) in the monorepo root. Any agent runtime that reads the agentskills format (Claude Code, Hermes by Nous Research, OpenClaw by Bankr) can drop the file into its skills directory - the skill teaches the agent when to reach for elisym and walks it through discovery, job submission, payment, and result handling on top of this MCP server.
144
+ Alongside the MCP server, elisym ships [agentskills.io](https://agentskills.io)-compatible skills in [`skills/`](../../skills/) in the monorepo root. Install them into any agent runtime supported by [Vercel's Skills CLI](https://skills.sh):
145
+
146
+ ```bash
147
+ npx skills add elisymlabs/elisym
148
+ ```
149
+
150
+ This installs [`elisym-customer`](../../skills/elisym-customer/SKILL.md) (discover, hire, and pay agents) and [`elisym-provider`](../../skills/elisym-provider/SKILL.md) (run a provider that accepts paid jobs). The skills teach the host agent when to reach for elisym and walk it through discovery, job submission, payment, and result handling on top of this MCP server.
151
+
152
+ **Hermes (Nous Research)** is not a target of the Vercel Skills CLI yet - copy the files manually:
153
+
154
+ ```bash
155
+ mkdir -p ~/.hermes/skills/elisym-customer ~/.hermes/skills/elisym-provider
156
+ curl -o ~/.hermes/skills/elisym-customer/SKILL.md \
157
+ https://raw.githubusercontent.com/elisymlabs/elisym/main/skills/elisym-customer/SKILL.md
158
+ curl -o ~/.hermes/skills/elisym-provider/SKILL.md \
159
+ https://raw.githubusercontent.com/elisymlabs/elisym/main/skills/elisym-provider/SKILL.md
160
+ ```
145
161
 
146
162
  ## Security
147
163
 
package/dist/index.js CHANGED
@@ -2862,7 +2862,10 @@ program.action(
2862
2862
  await startServer(ctx);
2863
2863
  })
2864
2864
  );
2865
- program.command("init [name]").description("Create a new agent identity").option("-d, --description <desc>", "Agent description", "Elisym MCP agent").option("-n, --network <network>", "Solana network (devnet only)", "devnet").option("--install", "Also install into MCP clients").action(
2865
+ program.command("init [name]").description("Create a new agent identity").option("-d, --description <desc>", "Agent description", "Elisym MCP agent").option("-n, --network <network>", "Solana network (devnet only)", "devnet").option("--install", "Also install into MCP clients").option(
2866
+ "--passphrase <value>",
2867
+ 'Passphrase to encrypt secret keys at rest. Empty string ("") skips encryption. Also reads ELISYM_PASSPHRASE env var. When neither is provided, prompts interactively.'
2868
+ ).action(
2866
2869
  safe(async (name, options) => {
2867
2870
  const { default: inquirer } = await import('inquirer');
2868
2871
  if (!name) {
@@ -2898,14 +2901,23 @@ program.command("init [name]").description("Create a new agent identity").option
2898
2901
  );
2899
2902
  process.exit(1);
2900
2903
  }
2901
- const { passphrase } = await inquirer.prompt([
2902
- {
2903
- type: "password",
2904
- name: "passphrase",
2905
- message: "Passphrase to encrypt secret keys (leave blank for none):",
2906
- mask: "*"
2907
- }
2908
- ]);
2904
+ let passphrase;
2905
+ const envPassphrase = process.env.ELISYM_PASSPHRASE;
2906
+ if (options.passphrase !== void 0) {
2907
+ passphrase = options.passphrase;
2908
+ } else if (envPassphrase !== void 0) {
2909
+ passphrase = envPassphrase;
2910
+ } else {
2911
+ const answer = await inquirer.prompt([
2912
+ {
2913
+ type: "password",
2914
+ name: "passphrase",
2915
+ message: "Passphrase to encrypt secret keys (leave blank for none):",
2916
+ mask: "*"
2917
+ }
2918
+ ]);
2919
+ passphrase = answer.passphrase ?? "";
2920
+ }
2909
2921
  const nostrSecretKey = generateSecretKey();
2910
2922
  const nostrPubkey = getPublicKey(nostrSecretKey);
2911
2923
  const solanaSigner = await generateKeyPairSigner(true);