@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 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
+ }
@@ -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.2.1",
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.5.1",
27
+ "@oneshot-agent/sdk": "^0.6.1",
28
28
  "zod": "^3.23.0"
29
29
  },
30
30
  "devDependencies": {