@oneshot-agent/mcp-server 0.3.2 → 0.4.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 +4 -6
- package/dist/index.js +32 -25
- package/dist/tools/browser.d.ts +4 -0
- package/dist/tools/browser.js +40 -0
- package/dist/tools/build.js +2 -2
- package/dist/tools/index.js +26 -0
- package/dist/tools/nyne.d.ts +14 -0
- package/dist/tools/nyne.js +116 -0
- package/dist/tools/search.d.ts +4 -0
- package/dist/tools/search.js +24 -0
- package/dist/tools/web-read.d.ts +4 -0
- package/dist/tools/web-read.js +19 -0
- package/package.json +7 -6
package/README.md
CHANGED
|
@@ -109,8 +109,8 @@ Add to `~/.claude/settings.json`:
|
|
|
109
109
|
|
|
110
110
|
| Tool | Description | Cost |
|
|
111
111
|
|------|-------------|------|
|
|
112
|
-
| `oneshot_build` | Build
|
|
113
|
-
| `oneshot_update_build` | Update an existing
|
|
112
|
+
| `oneshot_build` | Build and deploy production websites | ~$10+ |
|
|
113
|
+
| `oneshot_update_build` | Update an existing website | Discounted |
|
|
114
114
|
|
|
115
115
|
### Account
|
|
116
116
|
|
|
@@ -207,10 +207,8 @@ Use oneshot_inbox_list:
|
|
|
207
207
|
|
|
208
208
|
## Funding Your Agent
|
|
209
209
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
- **Test Mode** (default): Uses Base Sepolia testnet - get test USDC from faucets
|
|
213
|
-
- **Production Mode**: Uses Base Mainnet - requires real USDC
|
|
210
|
+
- **Test Mode** (default): Uses Base Sepolia testnet — get free test USDC from the [Circle Faucet](https://faucet.circle.com/) (select Base Sepolia)
|
|
211
|
+
- **Production Mode**: Uses Base Mainnet — send USDC to your agent's wallet address on Base
|
|
214
212
|
|
|
215
213
|
## Links
|
|
216
214
|
|
package/dist/index.js
CHANGED
|
@@ -4,37 +4,44 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
5
5
|
import { OneShot } from "@oneshot-agent/sdk";
|
|
6
6
|
import { tools, handleToolCall } from "./tools/index.js";
|
|
7
|
+
const CDP_KEY_ID = process.env.CDP_API_KEY_ID;
|
|
7
8
|
const PRIVATE_KEY = process.env.ONESHOT_WALLET_PRIVATE_KEY;
|
|
8
9
|
const TEST_MODE = process.env.ONESHOT_TEST_MODE !== "false"; // Default to test mode
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
async function initAgent() {
|
|
11
|
+
if (CDP_KEY_ID) {
|
|
12
|
+
// Preferred: Coinbase CDP Server Wallet (no private key exposure)
|
|
13
|
+
console.error("Using Coinbase CDP wallet");
|
|
14
|
+
return OneShot.create({ cdp: true, testMode: TEST_MODE });
|
|
15
|
+
}
|
|
16
|
+
if (PRIVATE_KEY) {
|
|
17
|
+
// Fallback: raw private key
|
|
18
|
+
return new OneShot({ privateKey: PRIVATE_KEY, testMode: TEST_MODE });
|
|
19
|
+
}
|
|
20
|
+
console.error("Error: Set CDP_API_KEY_ID + CDP_API_KEY_SECRET + CDP_WALLET_SECRET (recommended)\n" +
|
|
21
|
+
" or ONESHOT_WALLET_PRIVATE_KEY");
|
|
11
22
|
process.exit(1);
|
|
12
23
|
}
|
|
13
|
-
// Initialize OneShot SDK
|
|
14
|
-
const agent = new OneShot({
|
|
15
|
-
privateKey: PRIVATE_KEY,
|
|
16
|
-
testMode: TEST_MODE,
|
|
17
|
-
});
|
|
18
|
-
// Create MCP server
|
|
19
|
-
const server = new Server({
|
|
20
|
-
name: "oneshot-mcp",
|
|
21
|
-
version: "0.1.0",
|
|
22
|
-
}, {
|
|
23
|
-
capabilities: {
|
|
24
|
-
tools: {},
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
// List available tools
|
|
28
|
-
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
29
|
-
return { tools };
|
|
30
|
-
});
|
|
31
|
-
// Handle tool calls
|
|
32
|
-
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
33
|
-
const { name, arguments: args } = request.params;
|
|
34
|
-
return handleToolCall(agent, name, args || {});
|
|
35
|
-
});
|
|
36
24
|
// Start server
|
|
37
25
|
async function main() {
|
|
26
|
+
const agent = await initAgent();
|
|
27
|
+
// Create MCP server
|
|
28
|
+
const server = new Server({
|
|
29
|
+
name: "oneshot-mcp",
|
|
30
|
+
version: "0.3.3",
|
|
31
|
+
}, {
|
|
32
|
+
capabilities: {
|
|
33
|
+
tools: {},
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
// List available tools
|
|
37
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
38
|
+
return { tools };
|
|
39
|
+
});
|
|
40
|
+
// Handle tool calls
|
|
41
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
42
|
+
const { name, arguments: args } = request.params;
|
|
43
|
+
return handleToolCall(agent, name, args || {});
|
|
44
|
+
});
|
|
38
45
|
const transport = new StdioServerTransport();
|
|
39
46
|
await server.connect(transport);
|
|
40
47
|
console.error(`OneShot MCP server running (testMode: ${TEST_MODE})`);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { OneShot } from "@oneshot-agent/sdk";
|
|
3
|
+
export declare const browserTool: Tool;
|
|
4
|
+
export declare function handleBrowser(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").BrowserResult>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export const browserTool = {
|
|
2
|
+
name: "oneshot_browser",
|
|
3
|
+
description: "Automate web browsing tasks using AI. Navigate websites, extract data, fill forms, and perform multi-step workflows using natural language instructions. Costs ~$0.05-0.25 per task depending on complexity.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
task: {
|
|
8
|
+
type: "string",
|
|
9
|
+
description: "Natural language instruction for what to do in the browser (min 10 characters)",
|
|
10
|
+
},
|
|
11
|
+
output_schema: {
|
|
12
|
+
type: "object",
|
|
13
|
+
description: "JSON schema for structured output extraction (optional)",
|
|
14
|
+
},
|
|
15
|
+
start_url: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: "Initial URL to navigate to (optional)",
|
|
18
|
+
},
|
|
19
|
+
allowed_domains: {
|
|
20
|
+
type: "array",
|
|
21
|
+
items: { type: "string" },
|
|
22
|
+
description: "Restrict browsing to these domains (optional)",
|
|
23
|
+
},
|
|
24
|
+
max_steps: {
|
|
25
|
+
type: "number",
|
|
26
|
+
description: "Maximum browser steps (1-100, default: 50)",
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
required: ["task"],
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
export async function handleBrowser(agent, args) {
|
|
33
|
+
return agent.browser({
|
|
34
|
+
task: args.task,
|
|
35
|
+
output_schema: args.output_schema,
|
|
36
|
+
start_url: args.start_url,
|
|
37
|
+
allowed_domains: args.allowed_domains,
|
|
38
|
+
max_steps: args.max_steps,
|
|
39
|
+
});
|
|
40
|
+
}
|
package/dist/tools/build.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const buildTool = {
|
|
2
2
|
name: "oneshot_build",
|
|
3
|
-
description: "Build
|
|
3
|
+
description: "Build and deploy production websites - SaaS landing pages, portfolios, agency sites, restaurant pages, event sites, and more. Creates fully-functional sites with real hosting. Base price ~$10 includes 3 sections. Additional fees for extra sections, AI images, lead capture, custom domain, etc.",
|
|
4
4
|
inputSchema: {
|
|
5
5
|
type: "object",
|
|
6
6
|
properties: {
|
|
@@ -98,7 +98,7 @@ export const buildTool = {
|
|
|
98
98
|
};
|
|
99
99
|
export const updateBuildTool = {
|
|
100
100
|
name: "oneshot_update_build",
|
|
101
|
-
description: "Update an existing
|
|
101
|
+
description: "Update an existing website with new content or configuration. Requires the build_id from a previous build. Updates reuse existing hosting infrastructure at a discounted rate.",
|
|
102
102
|
inputSchema: {
|
|
103
103
|
type: "object",
|
|
104
104
|
properties: {
|
package/dist/tools/index.js
CHANGED
|
@@ -10,6 +10,10 @@ import { smsInboxListTool, smsInboxGetTool, handleSmsInboxList, handleSmsInboxGe
|
|
|
10
10
|
import { notificationsTool, markReadTool, handleNotifications, handleMarkRead } from "./notifications.js";
|
|
11
11
|
import { getBalanceTool, handleGetBalance } from "./wallet.js";
|
|
12
12
|
import { buildTool, updateBuildTool, handleBuild, handleUpdateBuild } from "./build.js";
|
|
13
|
+
import { browserTool, handleBrowser } from "./browser.js";
|
|
14
|
+
import { webSearchTool, handleWebSearch } from "./search.js";
|
|
15
|
+
import { webReadTool, handleWebRead } from "./web-read.js";
|
|
16
|
+
import { deepResearchPersonTool, socialProfilesTool, articleSearchTool, personNewsfeedTool, personInterestsTool, personInteractionsTool, handleDeepResearchPerson, handleSocialProfiles, handleArticleSearch, handlePersonNewsfeed, handlePersonInterests, handlePersonInteractions } from "./nyne.js";
|
|
13
17
|
// All available tools
|
|
14
18
|
export const tools = [
|
|
15
19
|
// Communication
|
|
@@ -27,12 +31,23 @@ export const tools = [
|
|
|
27
31
|
enrichProfileTool,
|
|
28
32
|
findEmailTool,
|
|
29
33
|
verifyEmailTool,
|
|
34
|
+
webSearchTool,
|
|
35
|
+
deepResearchPersonTool,
|
|
36
|
+
socialProfilesTool,
|
|
37
|
+
articleSearchTool,
|
|
38
|
+
personNewsfeedTool,
|
|
39
|
+
personInterestsTool,
|
|
40
|
+
personInteractionsTool,
|
|
30
41
|
// Commerce
|
|
31
42
|
commerceSearchTool,
|
|
32
43
|
commerceBuyTool,
|
|
33
44
|
// Build
|
|
34
45
|
buildTool,
|
|
35
46
|
updateBuildTool,
|
|
47
|
+
// Browser
|
|
48
|
+
browserTool,
|
|
49
|
+
// Web Read
|
|
50
|
+
webReadTool,
|
|
36
51
|
// Account
|
|
37
52
|
notificationsTool,
|
|
38
53
|
markReadTool,
|
|
@@ -55,12 +70,23 @@ const handlers = {
|
|
|
55
70
|
"oneshot_enrich_profile": handleEnrichProfile,
|
|
56
71
|
"oneshot_find_email": handleFindEmail,
|
|
57
72
|
"oneshot_verify_email": handleVerifyEmail,
|
|
73
|
+
"oneshot_web_search": handleWebSearch,
|
|
74
|
+
"oneshot_deep_research_person": handleDeepResearchPerson,
|
|
75
|
+
"oneshot_social_profiles": handleSocialProfiles,
|
|
76
|
+
"oneshot_article_search": handleArticleSearch,
|
|
77
|
+
"oneshot_person_newsfeed": handlePersonNewsfeed,
|
|
78
|
+
"oneshot_person_interests": handlePersonInterests,
|
|
79
|
+
"oneshot_person_interactions": handlePersonInteractions,
|
|
58
80
|
// Commerce
|
|
59
81
|
"oneshot_commerce_search": handleCommerceSearch,
|
|
60
82
|
"oneshot_commerce_buy": handleCommerceBuy,
|
|
61
83
|
// Build
|
|
62
84
|
"oneshot_build": handleBuild,
|
|
63
85
|
"oneshot_update_build": handleUpdateBuild,
|
|
86
|
+
// Browser
|
|
87
|
+
"oneshot_browser": handleBrowser,
|
|
88
|
+
// Web Read
|
|
89
|
+
"oneshot_web_read": handleWebRead,
|
|
64
90
|
// Account
|
|
65
91
|
"oneshot_notifications": handleNotifications,
|
|
66
92
|
"oneshot_mark_notification_read": handleMarkRead,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { OneShot } from "@oneshot-agent/sdk";
|
|
3
|
+
export declare const deepResearchPersonTool: Tool;
|
|
4
|
+
export declare const socialProfilesTool: Tool;
|
|
5
|
+
export declare const articleSearchTool: Tool;
|
|
6
|
+
export declare const personNewsfeedTool: Tool;
|
|
7
|
+
export declare const personInterestsTool: Tool;
|
|
8
|
+
export declare const personInteractionsTool: Tool;
|
|
9
|
+
export declare function handleDeepResearchPerson(agent: OneShot, args: Record<string, unknown>): Promise<any>;
|
|
10
|
+
export declare function handleSocialProfiles(agent: OneShot, args: Record<string, unknown>): Promise<any>;
|
|
11
|
+
export declare function handleArticleSearch(agent: OneShot, args: Record<string, unknown>): Promise<any>;
|
|
12
|
+
export declare function handlePersonNewsfeed(agent: OneShot, args: Record<string, unknown>): Promise<any>;
|
|
13
|
+
export declare function handlePersonInterests(agent: OneShot, args: Record<string, unknown>): Promise<any>;
|
|
14
|
+
export declare function handlePersonInteractions(agent: OneShot, args: Record<string, unknown>): Promise<any>;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
export const deepResearchPersonTool = {
|
|
2
|
+
name: "oneshot_deep_research_person",
|
|
3
|
+
description: "Deep research on a person — returns career history, social presence, interests, and connections. Takes 2-5 minutes. Costs ~$0.50.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
email: { type: "string", description: "Person's email address" },
|
|
8
|
+
social_media_url: { type: "string", description: "LinkedIn, Twitter, or other social profile URL" },
|
|
9
|
+
name: { type: "string", description: "Person's full name" },
|
|
10
|
+
company: { type: "string", description: "Company name (helps disambiguate)" },
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
export const socialProfilesTool = {
|
|
15
|
+
name: "oneshot_social_profiles",
|
|
16
|
+
description: "Discover all social media profiles for a person across platforms (LinkedIn, Twitter, GitHub, YouTube, etc). Costs ~$0.05.",
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: "object",
|
|
19
|
+
properties: {
|
|
20
|
+
email: { type: "string", description: "Person's email address" },
|
|
21
|
+
social_media_url: { type: "string", description: "Known social profile URL to start from" },
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export const articleSearchTool = {
|
|
26
|
+
name: "oneshot_article_search",
|
|
27
|
+
description: "Find articles, publications, and interviews about a person. Requires name and company. Costs ~$0.10.",
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: "object",
|
|
30
|
+
properties: {
|
|
31
|
+
name: { type: "string", description: "Person's full name" },
|
|
32
|
+
company: { type: "string", description: "Company name or domain" },
|
|
33
|
+
sort: { type: "string", enum: ["recent", "popular"], description: "Sort order (default: recent)" },
|
|
34
|
+
limit: { type: "number", description: "Max results 1-20 (default: 5)" },
|
|
35
|
+
},
|
|
36
|
+
required: ["name", "company"],
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
export const personNewsfeedTool = {
|
|
40
|
+
name: "oneshot_person_newsfeed",
|
|
41
|
+
description: "Get a person's recent social media posts with likes, replies, and shares. Costs ~$0.05.",
|
|
42
|
+
inputSchema: {
|
|
43
|
+
type: "object",
|
|
44
|
+
properties: {
|
|
45
|
+
social_media_url: { type: "string", description: "Social profile URL (Twitter, LinkedIn, etc)" },
|
|
46
|
+
},
|
|
47
|
+
required: ["social_media_url"],
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
export const personInterestsTool = {
|
|
51
|
+
name: "oneshot_person_interests",
|
|
52
|
+
description: "Figure out what someone cares about — sports, politics, tech, entertainment, etc. Costs ~$0.05.",
|
|
53
|
+
inputSchema: {
|
|
54
|
+
type: "object",
|
|
55
|
+
properties: {
|
|
56
|
+
email: { type: "string", description: "Person's email address" },
|
|
57
|
+
phone: { type: "string", description: "Person's phone number" },
|
|
58
|
+
social_media_url: { type: "string", description: "Social profile URL" },
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
export const personInteractionsTool = {
|
|
63
|
+
name: "oneshot_person_interactions",
|
|
64
|
+
description: "See who someone follows, who follows them, and who they reply to. Costs ~$0.10.",
|
|
65
|
+
inputSchema: {
|
|
66
|
+
type: "object",
|
|
67
|
+
properties: {
|
|
68
|
+
social_media_url: { type: "string", description: "Social profile or post URL (Twitter/X or Instagram)" },
|
|
69
|
+
type: { type: "string", enum: ["replies", "followers", "following", "followers,following"], description: "Interaction type (default: followers,following)" },
|
|
70
|
+
max_results: { type: "number", description: "Max results 1-1000 (default: 100)" },
|
|
71
|
+
},
|
|
72
|
+
required: ["social_media_url"],
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
// Handlers
|
|
76
|
+
export async function handleDeepResearchPerson(agent, args) {
|
|
77
|
+
return agent.deepResearchPerson({
|
|
78
|
+
email: args.email,
|
|
79
|
+
social_media_url: args.social_media_url,
|
|
80
|
+
name: args.name,
|
|
81
|
+
company: args.company,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
export async function handleSocialProfiles(agent, args) {
|
|
85
|
+
return agent.socialProfiles({
|
|
86
|
+
email: args.email,
|
|
87
|
+
social_media_url: args.social_media_url,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
export async function handleArticleSearch(agent, args) {
|
|
91
|
+
return agent.articleSearch({
|
|
92
|
+
name: args.name,
|
|
93
|
+
company: args.company,
|
|
94
|
+
sort: args.sort,
|
|
95
|
+
limit: args.limit,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
export async function handlePersonNewsfeed(agent, args) {
|
|
99
|
+
return agent.personNewsfeed({
|
|
100
|
+
social_media_url: args.social_media_url,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
export async function handlePersonInterests(agent, args) {
|
|
104
|
+
return agent.personInterests({
|
|
105
|
+
email: args.email,
|
|
106
|
+
phone: args.phone,
|
|
107
|
+
social_media_url: args.social_media_url,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
export async function handlePersonInteractions(agent, args) {
|
|
111
|
+
return agent.personInteractions({
|
|
112
|
+
social_media_url: args.social_media_url,
|
|
113
|
+
type: args.type,
|
|
114
|
+
max_results: args.max_results,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { OneShot } from "@oneshot-agent/sdk";
|
|
3
|
+
export declare const webSearchTool: Tool;
|
|
4
|
+
export declare function handleWebSearch(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").WebSearchResult>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const webSearchTool = {
|
|
2
|
+
name: "oneshot_web_search",
|
|
3
|
+
description: "Search the web and get URLs, titles, and descriptions. Fast and synchronous. Costs $0.01 per search.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
query: {
|
|
8
|
+
type: "string",
|
|
9
|
+
description: "Search query string",
|
|
10
|
+
},
|
|
11
|
+
max_results: {
|
|
12
|
+
type: "number",
|
|
13
|
+
description: "Maximum number of results to return (1-20, default: 5)",
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
required: ["query"],
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
export async function handleWebSearch(agent, args) {
|
|
20
|
+
return agent.webSearch({
|
|
21
|
+
query: args.query,
|
|
22
|
+
max_results: args.max_results,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { OneShot } from "@oneshot-agent/sdk";
|
|
3
|
+
export declare const webReadTool: Tool;
|
|
4
|
+
export declare function handleWebRead(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").WebReadResult>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const webReadTool = {
|
|
2
|
+
name: "oneshot_web_read",
|
|
3
|
+
description: "Read a web page and extract its content as markdown with a screenshot. Costs ~$0.02 per page.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
url: {
|
|
8
|
+
type: "string",
|
|
9
|
+
description: "URL of the web page to read",
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
required: ["url"],
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
export async function handleWebRead(agent, args) {
|
|
16
|
+
return agent.webRead({
|
|
17
|
+
url: args.url,
|
|
18
|
+
});
|
|
19
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneshot-agent/mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "MCP server for OneShot - commercial actions for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -23,13 +23,14 @@
|
|
|
23
23
|
"author": "OneShot",
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@
|
|
27
|
-
"@
|
|
28
|
-
"
|
|
26
|
+
"@coinbase/cdp-sdk": "1.45.0",
|
|
27
|
+
"@modelcontextprotocol/sdk": "1.27.1",
|
|
28
|
+
"@oneshot-agent/sdk": "workspace:*",
|
|
29
|
+
"zod": "3.25.76"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
|
-
"@types/node": "
|
|
32
|
-
"typescript": "
|
|
32
|
+
"@types/node": "25.3.5",
|
|
33
|
+
"typescript": "5.9.3"
|
|
33
34
|
},
|
|
34
35
|
"engines": {
|
|
35
36
|
"node": ">=18"
|