@oneshot-agent/mcp-server 0.29.0 → 0.30.0

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
@@ -226,7 +226,7 @@ instead of the wallet variables for a credits-only session on your own machine.
226
226
  | Tool | Description |
227
227
  |------|-------------|
228
228
  | `oneshot_spend_breakdown` | Spend by tool/category over a period |
229
- | `oneshot_rocs` | Return on Compute Spend analytics |
229
+ | `oneshot_return_on_spend` | Return on spend: cost vs. value produced |
230
230
  | `oneshot_receipts_list` | List spend receipts |
231
231
  | `oneshot_tag_receipt_value` | Tag a receipt with the value it generated |
232
232
 
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.0", // keep in sync with package.json; guarded by version.test.ts
55
+ version: "0.30.0", // keep in sync with package.json; guarded by version.test.ts
56
56
  }, {
57
57
  capabilities: {
58
58
  tools: {},
@@ -9,8 +9,8 @@ export const spendBreakdownTool = {
9
9
  },
10
10
  };
11
11
  export const rocsTool = {
12
- name: "oneshot_rocs",
13
- description: "Get Return on Compute Spend (RoCS) analytics for the agent over a period. Free.",
12
+ name: "oneshot_return_on_spend",
13
+ description: "Get the agent's return on spend over a period: what its tool calls cost compared with the value they produced (return on compute spend). Free.",
14
14
  inputSchema: {
15
15
  type: "object",
16
16
  properties: {
@@ -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: {
@@ -54,9 +54,9 @@ export const tagReceiptValueTool = {
54
54
  },
55
55
  };
56
56
  export const rocsByGoalTool = {
57
- name: "oneshot_rocs_by_goal",
58
- description: "Per-cadence RoCS rollup: spend (receipts) vs. value (outcomes) grouped by goal_id. " +
59
- "Answers 'what did this cadence cost vs. earn' in one query. Free.",
57
+ name: "oneshot_return_on_spend_by_goal",
58
+ description: "Return on spend per goal: what each goal cost (receipts) compared with the value it produced (tagged outcomes), grouped by goal_id. " +
59
+ "Answers 'what did this goal cost vs. earn' in one query. Free.",
60
60
  inputSchema: {
61
61
  type: "object",
62
62
  properties: {
@@ -64,7 +64,7 @@ export const TOOL_ANNOTATIONS = {
64
64
  // LinkedIn
65
65
  oneshot_linkedin_connect: write("Connect LinkedIn", OPEN),
66
66
  oneshot_linkedin_accounts: read("List LinkedIn accounts", OWN),
67
- oneshot_linkedin_sync: read("Sync LinkedIn messages", OPEN),
67
+ oneshot_linkedin_sync: write("Sync LinkedIn messages", OPEN), // paid; imports history into the account
68
68
  oneshot_linkedin_conversations: read("List LinkedIn conversations", OWN),
69
69
  oneshot_linkedin_messages: read("Read LinkedIn messages", OWN),
70
70
  oneshot_linkedin_reply: write("Send a LinkedIn message", OPEN),
@@ -78,8 +78,8 @@ export const TOOL_ANNOTATIONS = {
78
78
  oneshot_resume_domain: write("Resume a sending domain", OWN),
79
79
  // Analytics
80
80
  oneshot_spend_breakdown: read("Show spending", OWN),
81
- oneshot_rocs: read("Show return on spend", OWN),
82
- oneshot_rocs_by_goal: read("Show return on spend by goal", OWN),
81
+ oneshot_return_on_spend: read("Show return on spend", OWN),
82
+ oneshot_return_on_spend_by_goal: read("Show return on spend by goal", OWN),
83
83
  oneshot_receipts_list: read("List receipts", OWN),
84
84
  oneshot_tag_receipt_value: write("Tag a receipt's value", OWN),
85
85
  // Account
@@ -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) {
@@ -195,8 +195,8 @@ const handlers = {
195
195
  "oneshot_resume_domain": handleResumeDomain,
196
196
  // Analytics
197
197
  "oneshot_spend_breakdown": handleSpendBreakdown,
198
- "oneshot_rocs": handleRocs,
199
- "oneshot_rocs_by_goal": handleRocsByGoal,
198
+ "oneshot_return_on_spend": handleRocs,
199
+ "oneshot_return_on_spend_by_goal": handleRocsByGoal,
200
200
  "oneshot_receipts_list": handleReceiptsList,
201
201
  "oneshot_tag_receipt_value": handleTagReceiptValue,
202
202
  // Account
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneshot-agent/mcp-server",
3
- "version": "0.29.0",
3
+ "version": "0.30.0",
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": {