@oneshot-agent/mcp-server 0.29.1 → 0.30.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/index.js CHANGED
@@ -52,7 +52,7 @@ async function main() {
52
52
  // Create MCP server
53
53
  const server = new Server({
54
54
  name: "oneshot-mcp",
55
- version: "0.29.1", // keep in sync with package.json; guarded by version.test.ts
55
+ version: "0.30.1", // keep in sync with package.json; guarded by version.test.ts
56
56
  }, {
57
57
  capabilities: {
58
58
  tools: {},
@@ -10,8 +10,3 @@ export declare function handleRocs(agent: OneShot, args: Record<string, unknown>
10
10
  export declare function handleReceiptsList(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").ReceiptsListResult>;
11
11
  export declare function handleRocsByGoal(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").RoCSByGoalResult>;
12
12
  export declare function handleTagReceiptValue(agent: OneShot, args: Record<string, unknown>): Promise<void>;
13
- /**
14
- * Old tool names (renamed in 0.29.1 because "rocs" was unclear to users and
15
- * to ChatGPT's review scan). Still dispatched, never listed.
16
- */
17
- export declare const LEGACY_TOOL_ALIASES: Record<string, (agent: OneShot, args: Record<string, unknown>) => Promise<unknown>>;
@@ -39,7 +39,7 @@ export const tagReceiptValueTool = {
39
39
  "Address it three ways: receipt_id (rcpt_…), request_id from the original tool call, " +
40
40
  "or goal_id — a correlation key that attributes a whole cadence's outcome (a closed deal " +
41
41
  "across the intro email + follow-ups + find/verify/enrich calls sharing decisionContext.goalId) " +
42
- "in one call. Read goal-level rollups back with oneshot_rocs_by_goal. Free.",
42
+ "in one call. Read goal-level rollups back with oneshot_return_on_spend_by_goal. Free.",
43
43
  inputSchema: {
44
44
  type: "object",
45
45
  properties: {
@@ -98,11 +98,3 @@ export async function handleTagReceiptValue(agent, args) {
98
98
  label: args.label,
99
99
  });
100
100
  }
101
- /**
102
- * Old tool names (renamed in 0.29.1 because "rocs" was unclear to users and
103
- * to ChatGPT's review scan). Still dispatched, never listed.
104
- */
105
- export const LEGACY_TOOL_ALIASES = {
106
- oneshot_rocs: handleRocs,
107
- oneshot_rocs_by_goal: handleRocsByGoal,
108
- };
@@ -18,8 +18,8 @@ export const TOOL_ANNOTATIONS = {
18
18
  // Inbound voice
19
19
  oneshot_voice_number_provision: write("Get a phone number", OPEN),
20
20
  oneshot_voice_numbers: read("List phone numbers", OWN),
21
- oneshot_voice_inbound_set: write("Set up call answering", OWN, DESTRUCTIVE), // replaces the number's answering settings
22
- oneshot_voice_inbound_disable: write("Stop answering calls", OWN),
21
+ oneshot_voice_inbound_set: write("Set up call answering", OPEN, DESTRUCTIVE), // replaces the number's answering settings; outside callers reach it via the carrier
22
+ oneshot_voice_inbound_disable: write("Stop answering calls", OPEN),
23
23
  oneshot_voice_inbound_calls: read("List answered calls", OWN),
24
24
  // Research & enrichment
25
25
  oneshot_research: read("Deep research", OPEN),
@@ -34,6 +34,15 @@ export const computeTool = {
34
34
  description: "Make this a recurring goal (cron-style schedule object)",
35
35
  additionalProperties: true,
36
36
  },
37
+ approvals: {
38
+ type: "object",
39
+ description: "Enforced approvals: any single tool call costing more than spend_over_usdc, or using a listed tool, waits for the goal owner's approval (oneshot_compute_respond on its human_approval task) before anything is spent. An approval covers exactly one call: that tool, those params, at most that amount.",
40
+ properties: {
41
+ spend_over_usdc: { type: "number", minimum: 0, description: "Hold any single call costing more than this (USDC)" },
42
+ tools: { type: "array", items: { type: "string" }, description: 'Always hold these tools, e.g. ["commerce_buy", "physical_mail", "voice", "soul_hire"]' },
43
+ },
44
+ additionalProperties: false,
45
+ },
37
46
  },
38
47
  required: ["objective"],
39
48
  },
@@ -130,6 +139,7 @@ export async function handleCompute(agent, args) {
130
139
  soul_slug: args.soul_slug,
131
140
  soul_service_slug: args.soul_service_slug,
132
141
  schedule: args.schedule,
142
+ approvals: args.approvals,
133
143
  });
134
144
  }
135
145
  export async function handleComputeStatus(agent, args) {
@@ -23,7 +23,7 @@ import { linkedinConnectTool, linkedinAccountsTool, linkedinSyncTool, linkedinCo
23
23
  import { computeTool, computeStatusTool, computeTasksTool, computeCancelTool, computeRespondTool, computePauseTool, computeResumeTool, computeFundTool, handleCompute, handleComputeStatus, handleComputeTasks, handleComputeCancel, handleComputeRespond, handleComputePause, handleComputeResume, handleComputeFund } from "./compute.js";
24
24
  import { listDomainsTool, pauseDomainTool, resumeDomainTool, handleListDomains, handlePauseDomain, handleResumeDomain } from "./domains.js";
25
25
  import { TOOL_ANNOTATIONS } from "./annotations.js";
26
- import { spendBreakdownTool, rocsTool, rocsByGoalTool, receiptsListTool, tagReceiptValueTool, handleSpendBreakdown, handleRocs, handleRocsByGoal, handleReceiptsList, handleTagReceiptValue, LEGACY_TOOL_ALIASES } from "./analytics.js";
26
+ import { spendBreakdownTool, rocsTool, rocsByGoalTool, receiptsListTool, tagReceiptValueTool, handleSpendBreakdown, handleRocs, handleRocsByGoal, handleReceiptsList, handleTagReceiptValue } from "./analytics.js";
27
27
  // All available tools, before annotations
28
28
  const toolDefinitions = [
29
29
  // Communication
@@ -197,8 +197,6 @@ const handlers = {
197
197
  "oneshot_spend_breakdown": handleSpendBreakdown,
198
198
  "oneshot_return_on_spend": handleRocs,
199
199
  "oneshot_return_on_spend_by_goal": handleRocsByGoal,
200
- // Pre-0.29.1 names: callable, never listed, so existing clients keep working.
201
- ...LEGACY_TOOL_ALIASES,
202
200
  "oneshot_receipts_list": handleReceiptsList,
203
201
  "oneshot_tag_receipt_value": handleTagReceiptValue,
204
202
  // Account
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneshot-agent/mcp-server",
3
- "version": "0.29.1",
3
+ "version": "0.30.1",
4
4
  "description": "MCP server for OneShot - 73 tools for AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,7 +25,7 @@
25
25
  "dependencies": {
26
26
  "@coinbase/cdp-sdk": "1.45.0",
27
27
  "@modelcontextprotocol/sdk": "1.27.1",
28
- "@oneshot-agent/sdk": "^0.43.0",
28
+ "@oneshot-agent/sdk": "^0.44.0",
29
29
  "zod": "3.25.76"
30
30
  },
31
31
  "devDependencies": {