@oneshot-agent/mcp-server 0.2.1 → 0.3.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 +23 -0
- package/dist/tools/build.d.ts +6 -0
- package/dist/tools/build.js +212 -0
- package/dist/tools/index.js +7 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -105,6 +105,13 @@ Add to `~/.claude/settings.json`:
|
|
|
105
105
|
| `oneshot_commerce_search` | Search for products | Free |
|
|
106
106
|
| `oneshot_commerce_buy` | Purchase products | Product price + fee |
|
|
107
107
|
|
|
108
|
+
### Build
|
|
109
|
+
|
|
110
|
+
| Tool | Description | Cost |
|
|
111
|
+
|------|-------------|------|
|
|
112
|
+
| `oneshot_build` | Build a website | ~$149+ |
|
|
113
|
+
| `oneshot_update_build` | Update an existing website | Discounted |
|
|
114
|
+
|
|
108
115
|
### Account
|
|
109
116
|
|
|
110
117
|
| Tool | Description | Cost |
|
|
@@ -174,6 +181,22 @@ Use oneshot_find_email:
|
|
|
174
181
|
Use oneshot_get_balance (no parameters needed)
|
|
175
182
|
```
|
|
176
183
|
|
|
184
|
+
### Build a Website
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
Use oneshot_build:
|
|
188
|
+
- type: "saas"
|
|
189
|
+
- product:
|
|
190
|
+
name: "Acme Analytics"
|
|
191
|
+
description: "Real-time analytics dashboard for modern teams. Track metrics, visualize data, and make better decisions."
|
|
192
|
+
industry: "Software"
|
|
193
|
+
- lead_capture:
|
|
194
|
+
enabled: true
|
|
195
|
+
- brand:
|
|
196
|
+
primary_color: "#4F46E5"
|
|
197
|
+
tone: "professional"
|
|
198
|
+
```
|
|
199
|
+
|
|
177
200
|
### Read Inbox
|
|
178
201
|
|
|
179
202
|
```
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { OneShot } from "@oneshot-agent/sdk";
|
|
3
|
+
export declare const buildTool: Tool;
|
|
4
|
+
export declare const updateBuildTool: Tool;
|
|
5
|
+
export declare function handleBuild(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").BuildResult>;
|
|
6
|
+
export declare function handleUpdateBuild(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").BuildResult>;
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
export const buildTool = {
|
|
2
|
+
name: "oneshot_build",
|
|
3
|
+
description: "Build a website. Base price ~$149 includes 3 sections. Additional fees for extra sections, AI images, lead capture, custom domain, etc.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
type: {
|
|
8
|
+
type: "string",
|
|
9
|
+
enum: ["saas", "portfolio", "agency", "personal", "product", "funnel", "restaurant", "event"],
|
|
10
|
+
description: "Website type (default: saas)",
|
|
11
|
+
},
|
|
12
|
+
product: {
|
|
13
|
+
type: "object",
|
|
14
|
+
properties: {
|
|
15
|
+
name: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: "Product or business name",
|
|
18
|
+
},
|
|
19
|
+
description: {
|
|
20
|
+
type: "string",
|
|
21
|
+
description: "Description of the product/service (min 10 chars)",
|
|
22
|
+
},
|
|
23
|
+
industry: {
|
|
24
|
+
type: "string",
|
|
25
|
+
description: "Industry category",
|
|
26
|
+
},
|
|
27
|
+
pricing: {
|
|
28
|
+
type: "string",
|
|
29
|
+
description: "Pricing information to display",
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
required: ["name", "description"],
|
|
33
|
+
},
|
|
34
|
+
source_url: {
|
|
35
|
+
type: "string",
|
|
36
|
+
description: "URL to analyze for content/inspiration (+$10)",
|
|
37
|
+
},
|
|
38
|
+
sections: {
|
|
39
|
+
type: "array",
|
|
40
|
+
items: { type: "string" },
|
|
41
|
+
description: "Specific sections to include (e.g., ['hero', 'features', 'pricing', 'testimonials'])",
|
|
42
|
+
},
|
|
43
|
+
lead_capture: {
|
|
44
|
+
type: "object",
|
|
45
|
+
properties: {
|
|
46
|
+
enabled: {
|
|
47
|
+
type: "boolean",
|
|
48
|
+
description: "Enable lead capture form (+$15)",
|
|
49
|
+
},
|
|
50
|
+
inbox_email: {
|
|
51
|
+
type: "string",
|
|
52
|
+
description: "Email to receive leads (defaults to agent inbox)",
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
brand: {
|
|
57
|
+
type: "object",
|
|
58
|
+
properties: {
|
|
59
|
+
primary_color: {
|
|
60
|
+
type: "string",
|
|
61
|
+
description: "Primary brand color (hex format, e.g., #FF5733)",
|
|
62
|
+
},
|
|
63
|
+
font: {
|
|
64
|
+
type: "string",
|
|
65
|
+
description: "Font family preference",
|
|
66
|
+
},
|
|
67
|
+
tone: {
|
|
68
|
+
type: "string",
|
|
69
|
+
enum: ["professional", "playful", "bold", "minimal"],
|
|
70
|
+
description: "Brand tone",
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
images: {
|
|
75
|
+
type: "object",
|
|
76
|
+
properties: {
|
|
77
|
+
hero: {
|
|
78
|
+
type: "string",
|
|
79
|
+
description: "Hero image URL",
|
|
80
|
+
},
|
|
81
|
+
logo: {
|
|
82
|
+
type: "string",
|
|
83
|
+
description: "Logo image URL",
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
domain: {
|
|
88
|
+
type: "string",
|
|
89
|
+
description: "Custom domain (e.g., mysite.com) (+$20)",
|
|
90
|
+
},
|
|
91
|
+
build_id: {
|
|
92
|
+
type: "string",
|
|
93
|
+
description: "Existing build ID to update (for iterations)",
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
required: ["product"],
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
export const updateBuildTool = {
|
|
100
|
+
name: "oneshot_update_build",
|
|
101
|
+
description: "Update an existing website. Requires the build_id from a previous build. Updates use the same GitHub repo and Vercel project, often at a discounted rate.",
|
|
102
|
+
inputSchema: {
|
|
103
|
+
type: "object",
|
|
104
|
+
properties: {
|
|
105
|
+
build_id: {
|
|
106
|
+
type: "string",
|
|
107
|
+
description: "Existing build ID to update (from previous build result)",
|
|
108
|
+
},
|
|
109
|
+
product: {
|
|
110
|
+
type: "object",
|
|
111
|
+
properties: {
|
|
112
|
+
name: {
|
|
113
|
+
type: "string",
|
|
114
|
+
description: "Product or business name",
|
|
115
|
+
},
|
|
116
|
+
description: {
|
|
117
|
+
type: "string",
|
|
118
|
+
description: "Description of the product/service (min 10 chars)",
|
|
119
|
+
},
|
|
120
|
+
industry: {
|
|
121
|
+
type: "string",
|
|
122
|
+
description: "Industry category",
|
|
123
|
+
},
|
|
124
|
+
pricing: {
|
|
125
|
+
type: "string",
|
|
126
|
+
description: "Pricing information to display",
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
required: ["name", "description"],
|
|
130
|
+
},
|
|
131
|
+
type: {
|
|
132
|
+
type: "string",
|
|
133
|
+
enum: ["saas", "portfolio", "agency", "personal", "product", "funnel", "restaurant", "event"],
|
|
134
|
+
description: "Website type (optional, keeps existing if not specified)",
|
|
135
|
+
},
|
|
136
|
+
source_url: {
|
|
137
|
+
type: "string",
|
|
138
|
+
description: "URL to analyze for content/inspiration",
|
|
139
|
+
},
|
|
140
|
+
sections: {
|
|
141
|
+
type: "array",
|
|
142
|
+
items: { type: "string" },
|
|
143
|
+
description: "Specific sections to include",
|
|
144
|
+
},
|
|
145
|
+
lead_capture: {
|
|
146
|
+
type: "object",
|
|
147
|
+
properties: {
|
|
148
|
+
enabled: { type: "boolean" },
|
|
149
|
+
inbox_email: { type: "string" },
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
brand: {
|
|
153
|
+
type: "object",
|
|
154
|
+
properties: {
|
|
155
|
+
primary_color: { type: "string" },
|
|
156
|
+
font: { type: "string" },
|
|
157
|
+
tone: { type: "string", enum: ["professional", "playful", "bold", "minimal"] },
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
images: {
|
|
161
|
+
type: "object",
|
|
162
|
+
properties: {
|
|
163
|
+
hero: { type: "string" },
|
|
164
|
+
logo: { type: "string" },
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
domain: {
|
|
168
|
+
type: "string",
|
|
169
|
+
description: "Custom domain",
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
required: ["build_id", "product"],
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
export async function handleBuild(agent, args) {
|
|
176
|
+
const product = args.product;
|
|
177
|
+
return agent.build({
|
|
178
|
+
type: args.type,
|
|
179
|
+
product: {
|
|
180
|
+
name: product.name,
|
|
181
|
+
description: product.description,
|
|
182
|
+
industry: product.industry,
|
|
183
|
+
pricing: product.pricing,
|
|
184
|
+
},
|
|
185
|
+
source_url: args.source_url,
|
|
186
|
+
sections: args.sections,
|
|
187
|
+
lead_capture: args.lead_capture,
|
|
188
|
+
brand: args.brand,
|
|
189
|
+
images: args.images,
|
|
190
|
+
domain: args.domain,
|
|
191
|
+
build_id: args.build_id,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
export async function handleUpdateBuild(agent, args) {
|
|
195
|
+
const product = args.product;
|
|
196
|
+
return agent.updateBuild({
|
|
197
|
+
build_id: args.build_id,
|
|
198
|
+
product: {
|
|
199
|
+
name: product.name,
|
|
200
|
+
description: product.description,
|
|
201
|
+
industry: product.industry,
|
|
202
|
+
pricing: product.pricing,
|
|
203
|
+
},
|
|
204
|
+
type: args.type,
|
|
205
|
+
source_url: args.source_url,
|
|
206
|
+
sections: args.sections,
|
|
207
|
+
lead_capture: args.lead_capture,
|
|
208
|
+
brand: args.brand,
|
|
209
|
+
images: args.images,
|
|
210
|
+
domain: args.domain,
|
|
211
|
+
});
|
|
212
|
+
}
|
package/dist/tools/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import { inboxListTool, inboxGetTool, handleInboxList, handleInboxGet } from "./
|
|
|
9
9
|
import { smsInboxListTool, smsInboxGetTool, handleSmsInboxList, handleSmsInboxGet } from "./sms-inbox.js";
|
|
10
10
|
import { notificationsTool, markReadTool, handleNotifications, handleMarkRead } from "./notifications.js";
|
|
11
11
|
import { getBalanceTool, handleGetBalance } from "./wallet.js";
|
|
12
|
+
import { buildTool, updateBuildTool, handleBuild, handleUpdateBuild } from "./build.js";
|
|
12
13
|
// All available tools
|
|
13
14
|
export const tools = [
|
|
14
15
|
// Communication
|
|
@@ -29,6 +30,9 @@ export const tools = [
|
|
|
29
30
|
// Commerce
|
|
30
31
|
commerceSearchTool,
|
|
31
32
|
commerceBuyTool,
|
|
33
|
+
// Build
|
|
34
|
+
buildTool,
|
|
35
|
+
updateBuildTool,
|
|
32
36
|
// Account
|
|
33
37
|
notificationsTool,
|
|
34
38
|
markReadTool,
|
|
@@ -54,6 +58,9 @@ const handlers = {
|
|
|
54
58
|
// Commerce
|
|
55
59
|
"oneshot_commerce_search": handleCommerceSearch,
|
|
56
60
|
"oneshot_commerce_buy": handleCommerceBuy,
|
|
61
|
+
// Build
|
|
62
|
+
"oneshot_build": handleBuild,
|
|
63
|
+
"oneshot_update_build": handleUpdateBuild,
|
|
57
64
|
// Account
|
|
58
65
|
"oneshot_notifications": handleNotifications,
|
|
59
66
|
"oneshot_mark_notification_read": handleMarkRead,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneshot-agent/mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "MCP server for OneShot - commercial actions for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
27
|
-
"@oneshot-agent/sdk": "^0.
|
|
27
|
+
"@oneshot-agent/sdk": "^0.6.1",
|
|
28
28
|
"zod": "^3.23.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|