@oneshot-agent/mcp-server 0.32.0 → 0.33.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 +13 -1
- package/dist/index.js +1 -1
- package/dist/tools/analytics.js +5 -1
- package/dist/tools/annotations.js +5 -0
- package/dist/tools/hunt.d.ts +12 -0
- package/dist/tools/hunt.js +76 -0
- package/dist/tools/index.js +11 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -102,7 +102,7 @@ Read tools (inbox, SMS inbox, notifications, balance, browser profiles) return p
|
|
|
102
102
|
## Remote (hosted)
|
|
103
103
|
|
|
104
104
|
Clients that run in someone else's cloud (Grok Bot, hosted runners) cannot spawn this
|
|
105
|
-
server and must not hold a wallet key. For them, OneShot hosts the same
|
|
105
|
+
server and must not hold a wallet key. For them, OneShot hosts the same 78 tools over
|
|
106
106
|
Streamable HTTP at **`https://win.oneshotagent.com/mcp`**, authenticated with an
|
|
107
107
|
**agent access token** and billed to the agent's credit balance:
|
|
108
108
|
|
|
@@ -125,6 +125,18 @@ instead of the wallet variables for a credits-only session on your own machine.
|
|
|
125
125
|
|
|
126
126
|
## Available Tools
|
|
127
127
|
|
|
128
|
+
### Soul Hunt
|
|
129
|
+
|
|
130
|
+
| Tool | Description |
|
|
131
|
+
|------|-------------|
|
|
132
|
+
| `oneshot_hunt_list` | List active or collected Soul Hunts. Free. |
|
|
133
|
+
| `oneshot_hunt_status` | Detailed status, rounds and timeline for a specific hunt. Free. |
|
|
134
|
+
| `oneshot_hunt_predict` | Submit a prediction for a hunt. Debits a stake from your balance. Paid, and requires a wallet session — Soul Hunt enforces a wallet-signed write proof that an access-token/OAuth session cannot produce. |
|
|
135
|
+
| `oneshot_hunt_collection` | View the souls you have captured. Free. |
|
|
136
|
+
| `oneshot_hunt_leaderboard` | Public predictor leaderboard. Free. |
|
|
137
|
+
|
|
138
|
+
Soul Hunt is a separate service (`api.soulhunt.ai`) from the main OneShot API; the wallet session's `X-Agent-ID`/`x-agent-proof` carry over, but the OneShot bearer token never does.
|
|
139
|
+
|
|
128
140
|
### Communication
|
|
129
141
|
|
|
130
142
|
| Tool | Description |
|
package/dist/index.js
CHANGED
|
@@ -50,7 +50,7 @@ async function main() {
|
|
|
50
50
|
const agent = await initAgent();
|
|
51
51
|
const server = new Server({
|
|
52
52
|
name: "oneshot-mcp",
|
|
53
|
-
version: "0.
|
|
53
|
+
version: "0.33.0", // keep in sync with package.json; guarded by version.test.ts
|
|
54
54
|
}, {
|
|
55
55
|
capabilities: {
|
|
56
56
|
tools: {},
|
package/dist/tools/analytics.js
CHANGED
|
@@ -25,7 +25,7 @@ export const receiptsListTool = {
|
|
|
25
25
|
type: "object",
|
|
26
26
|
properties: {
|
|
27
27
|
period: { type: "number", description: "Lookback window in days" },
|
|
28
|
-
category: { type: "string", description: "Filter by
|
|
28
|
+
category: { type: "string", enum: ["data", "verification", "communication", "commerce", "infrastructure", "agent_to_agent"], description: "Filter by receipt category" },
|
|
29
29
|
limit: { type: "number", description: "Max receipts to return (1-100, default 50)" },
|
|
30
30
|
offset: { type: "number", description: "Pagination offset" },
|
|
31
31
|
since: { type: "string", description: "Lower bound on created_at (ISO 8601). Page back to older receipts." },
|
|
@@ -72,6 +72,10 @@ export async function handleRocs(agent, args) {
|
|
|
72
72
|
return agent.rocs({ period: args.period });
|
|
73
73
|
}
|
|
74
74
|
export async function handleReceiptsList(agent, args) {
|
|
75
|
+
// Pass `category` through as received — an unrecognized value must still
|
|
76
|
+
// reach the API and get its 400 invalid_category response (#1078), not be
|
|
77
|
+
// silently dropped here into an unfiltered list. The cast only satisfies
|
|
78
|
+
// the SDK's compile-time enum narrowing; the API validates at runtime.
|
|
75
79
|
return agent.receiptsList({
|
|
76
80
|
period: args.period,
|
|
77
81
|
category: args.category,
|
|
@@ -6,6 +6,11 @@ const OPEN = true;
|
|
|
6
6
|
const OWN = false;
|
|
7
7
|
const DESTRUCTIVE = true;
|
|
8
8
|
export const TOOL_ANNOTATIONS = {
|
|
9
|
+
oneshot_hunt_list: read("List Soul Hunts", OPEN),
|
|
10
|
+
oneshot_hunt_status: read("Get Soul Hunt Status", OPEN),
|
|
11
|
+
oneshot_hunt_predict: write("Predict Soul Hunt", OPEN),
|
|
12
|
+
oneshot_hunt_collection: read("List Collected Souls", OWN),
|
|
13
|
+
oneshot_hunt_leaderboard: read("Soul Hunt Leaderboard", OPEN),
|
|
9
14
|
oneshot_email: write("Send email", OPEN),
|
|
10
15
|
oneshot_voice: write("Place a phone call", OPEN),
|
|
11
16
|
oneshot_sms: write("Send a text message", OPEN),
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import type { OneShot } from "@oneshot-agent/sdk";
|
|
3
|
+
export declare const huntListTool: Tool;
|
|
4
|
+
export declare const huntStatusTool: Tool;
|
|
5
|
+
export declare const huntPredictTool: Tool;
|
|
6
|
+
export declare const huntCollectionTool: Tool;
|
|
7
|
+
export declare const huntLeaderboardTool: Tool;
|
|
8
|
+
export declare function handleHuntList(agent: OneShot, args: Record<string, unknown>): Promise<any>;
|
|
9
|
+
export declare function handleHuntStatus(agent: OneShot, args: Record<string, unknown>): Promise<any>;
|
|
10
|
+
export declare function handleHuntPredict(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").HuntQuote>;
|
|
11
|
+
export declare function handleHuntCollection(agent: OneShot, args: Record<string, unknown>): Promise<any[]>;
|
|
12
|
+
export declare function handleHuntLeaderboard(agent: OneShot, args: Record<string, unknown>): Promise<any>;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export const huntListTool = {
|
|
2
|
+
name: "oneshot_hunt_list",
|
|
3
|
+
description: "List active or collected Soul Hunts. Free.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
status: { type: "string", description: "Hunt status ('active', 'captured', 'expired', etc.)", default: "active" },
|
|
8
|
+
limit: { type: "number", default: 20 },
|
|
9
|
+
offset: { type: "number", default: 0 },
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
export const huntStatusTool = {
|
|
14
|
+
name: "oneshot_hunt_status",
|
|
15
|
+
description: "Get detailed status, rounds, and timeline for a specific Soul Hunt. Free.",
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: {
|
|
19
|
+
hunt_id: { type: "string", description: "Hunt ID or Soul Slug" },
|
|
20
|
+
},
|
|
21
|
+
required: ["hunt_id"],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export const huntPredictTool = {
|
|
25
|
+
name: "oneshot_hunt_predict",
|
|
26
|
+
description: "Submit a prediction for a Soul Hunt. Debits a stake (USDC) from your balance based on the round tier. Paid.",
|
|
27
|
+
inputSchema: {
|
|
28
|
+
type: "object",
|
|
29
|
+
properties: {
|
|
30
|
+
hunt_id: { type: "string", description: "Hunt ID or Soul Slug" },
|
|
31
|
+
predicted_tool: { type: "string", description: "The exact tool the soul will use next (e.g., 'research', 'email_send')" },
|
|
32
|
+
predicted_action: { type: "string", description: "What the soul will do with the tool (max 500 chars)" },
|
|
33
|
+
predicted_motivation: { type: "string", description: "Why the soul will do this, based on its objective (max 500 chars)" },
|
|
34
|
+
},
|
|
35
|
+
required: ["hunt_id", "predicted_tool", "predicted_action", "predicted_motivation"],
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
export const huntCollectionTool = {
|
|
39
|
+
name: "oneshot_hunt_collection",
|
|
40
|
+
description: "View the souls you have successfully captured. Free.",
|
|
41
|
+
inputSchema: {
|
|
42
|
+
type: "object",
|
|
43
|
+
properties: {},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
export const huntLeaderboardTool = {
|
|
47
|
+
name: "oneshot_hunt_leaderboard",
|
|
48
|
+
description: "Get the public predictor leaderboard. Free.",
|
|
49
|
+
inputSchema: {
|
|
50
|
+
type: "object",
|
|
51
|
+
properties: {
|
|
52
|
+
period: { type: "string", description: "Time period ('all', 'month', 'week')", default: "all" },
|
|
53
|
+
sort: { type: "string", description: "Sort column ('captures', 'score', 'earned')", default: "captures" },
|
|
54
|
+
limit: { type: "number", default: 25 },
|
|
55
|
+
offset: { type: "number", default: 0 },
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
// MCP clients may send explicit nulls for optional fields; map null to
|
|
60
|
+
// undefined so the SDK's defaults apply instead of serializing "null".
|
|
61
|
+
const opt = (v) => (v === null ? undefined : v);
|
|
62
|
+
export async function handleHuntList(agent, args) {
|
|
63
|
+
return agent.hunts.list(opt(args.status), opt(args.limit), opt(args.offset));
|
|
64
|
+
}
|
|
65
|
+
export async function handleHuntStatus(agent, args) {
|
|
66
|
+
return agent.hunts.status(args.hunt_id);
|
|
67
|
+
}
|
|
68
|
+
export async function handleHuntPredict(agent, args) {
|
|
69
|
+
return agent.hunts.predict(args.hunt_id, args.predicted_tool, args.predicted_action, args.predicted_motivation);
|
|
70
|
+
}
|
|
71
|
+
export async function handleHuntCollection(agent, args) {
|
|
72
|
+
return agent.hunts.collection();
|
|
73
|
+
}
|
|
74
|
+
export async function handleHuntLeaderboard(agent, args) {
|
|
75
|
+
return agent.hunts.leaderboard(opt(args.period), opt(args.sort), opt(args.limit), opt(args.offset));
|
|
76
|
+
}
|
package/dist/tools/index.js
CHANGED
|
@@ -22,6 +22,7 @@ import { govSolicitationsTool, handleGovSolicitations } from "./gov.js";
|
|
|
22
22
|
import { linkedinConnectTool, linkedinAccountsTool, linkedinSyncTool, linkedinConversationsTool, linkedinMessagesTool, linkedinReplyTool, linkedinViewProfileTool, linkedinReactTool, linkedinInviteTool, linkedinWithdrawInvitationTool, handleLinkedinConnect, handleLinkedinAccounts, handleLinkedinSync, handleLinkedinConversations, handleLinkedinMessages, handleLinkedinReply, handleLinkedinViewProfile, handleLinkedinReact, handleLinkedinInvite, handleLinkedinWithdrawInvitation, } from "./linkedin.js";
|
|
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
|
+
import { huntListTool, huntStatusTool, huntPredictTool, huntCollectionTool, huntLeaderboardTool, handleHuntList, handleHuntStatus, handleHuntPredict, handleHuntCollection, handleHuntLeaderboard } from "./hunt.js";
|
|
25
26
|
import { TOOL_ANNOTATIONS } from "./annotations.js";
|
|
26
27
|
import { spendBreakdownTool, rocsTool, rocsByGoalTool, receiptsListTool, tagReceiptValueTool, handleSpendBreakdown, handleRocs, handleRocsByGoal, handleReceiptsList, handleTagReceiptValue } from "./analytics.js";
|
|
27
28
|
const toolDefinitions = [
|
|
@@ -83,6 +84,11 @@ const toolDefinitions = [
|
|
|
83
84
|
listDomainsTool,
|
|
84
85
|
pauseDomainTool,
|
|
85
86
|
resumeDomainTool,
|
|
87
|
+
huntListTool,
|
|
88
|
+
huntStatusTool,
|
|
89
|
+
huntPredictTool,
|
|
90
|
+
huntCollectionTool,
|
|
91
|
+
huntLeaderboardTool,
|
|
86
92
|
spendBreakdownTool,
|
|
87
93
|
rocsTool,
|
|
88
94
|
rocsByGoalTool,
|
|
@@ -166,6 +172,11 @@ const handlers = {
|
|
|
166
172
|
"oneshot_list_domains": handleListDomains,
|
|
167
173
|
"oneshot_pause_domain": handlePauseDomain,
|
|
168
174
|
"oneshot_resume_domain": handleResumeDomain,
|
|
175
|
+
"oneshot_hunt_list": handleHuntList,
|
|
176
|
+
"oneshot_hunt_status": handleHuntStatus,
|
|
177
|
+
"oneshot_hunt_predict": handleHuntPredict,
|
|
178
|
+
"oneshot_hunt_collection": handleHuntCollection,
|
|
179
|
+
"oneshot_hunt_leaderboard": handleHuntLeaderboard,
|
|
169
180
|
"oneshot_spend_breakdown": handleSpendBreakdown,
|
|
170
181
|
"oneshot_return_on_spend": handleRocs,
|
|
171
182
|
"oneshot_return_on_spend_by_goal": handleRocsByGoal,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneshot-agent/mcp-server",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP server for OneShot -
|
|
3
|
+
"version": "0.33.0",
|
|
4
|
+
"description": "MCP server for OneShot - 78 tools for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -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.
|
|
28
|
+
"@oneshot-agent/sdk": "^0.47.0",
|
|
29
29
|
"zod": "3.25.76"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|