@oneshot-agent/mcp-server 0.1.0 → 0.2.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 +81 -23
- package/dist/tools/inbox.d.ts +6 -0
- package/dist/tools/inbox.js +45 -0
- package/dist/tools/index.js +30 -4
- package/dist/tools/people.d.ts +4 -0
- package/dist/tools/people.js +65 -0
- package/dist/tools/sms-inbox.d.ts +6 -0
- package/dist/tools/sms-inbox.js +45 -0
- package/dist/tools/voice.js +1 -1
- package/dist/tools/wallet.d.ts +9 -0
- package/dist/tools/wallet.js +17 -0
- package/package.json +13 -3
package/README.md
CHANGED
|
@@ -33,21 +33,27 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
|
33
33
|
}
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
###
|
|
36
|
+
### Cursor
|
|
37
37
|
|
|
38
|
-
Add to your
|
|
38
|
+
Add to `.cursor/mcp.json` in your project:
|
|
39
39
|
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"mcpServers": {
|
|
43
|
+
"oneshot": {
|
|
44
|
+
"command": "npx",
|
|
45
|
+
"args": ["-y", "@oneshot-agent/mcp-server"],
|
|
46
|
+
"env": {
|
|
47
|
+
"ONESHOT_WALLET_PRIVATE_KEY": "0xYourPrivateKey"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
46
52
|
```
|
|
47
53
|
|
|
48
|
-
###
|
|
54
|
+
### Claude Code
|
|
49
55
|
|
|
50
|
-
Add to
|
|
56
|
+
Add to `~/.claude/settings.json`:
|
|
51
57
|
|
|
52
58
|
```json
|
|
53
59
|
{
|
|
@@ -65,26 +71,54 @@ Add to `.cursor/mcp.json` in your project:
|
|
|
65
71
|
|
|
66
72
|
## Available Tools
|
|
67
73
|
|
|
74
|
+
### Communication
|
|
75
|
+
|
|
68
76
|
| Tool | Description | Cost |
|
|
69
77
|
|------|-------------|------|
|
|
70
78
|
| `oneshot_email` | Send emails with attachments | ~$0.01 |
|
|
71
|
-
| `oneshot_voice` |
|
|
79
|
+
| `oneshot_voice` | Make phone calls | ~$0.25/min |
|
|
72
80
|
| `oneshot_sms` | Send SMS messages | ~$0.035/segment |
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
|
77
|
-
|
|
81
|
+
|
|
82
|
+
### Inbox
|
|
83
|
+
|
|
84
|
+
| Tool | Description | Cost |
|
|
85
|
+
|------|-------------|------|
|
|
86
|
+
| `oneshot_inbox_list` | List received emails | Free |
|
|
87
|
+
| `oneshot_inbox_get` | Get a specific email | Free |
|
|
88
|
+
| `oneshot_sms_inbox_list` | List received SMS messages | Free |
|
|
89
|
+
| `oneshot_sms_inbox_get` | Get a specific SMS message | Free |
|
|
90
|
+
|
|
91
|
+
### Research & Enrichment
|
|
92
|
+
|
|
93
|
+
| Tool | Description | Cost |
|
|
94
|
+
|------|-------------|------|
|
|
95
|
+
| `oneshot_research` | Deep web research with sources | $0.50-$2.00 |
|
|
96
|
+
| `oneshot_people_search` | Search for people by title, company, etc. | ~$0.10/result |
|
|
97
|
+
| `oneshot_enrich_profile` | Enrich person profile from LinkedIn/email | ~$0.10 |
|
|
98
|
+
| `oneshot_find_email` | Find someone's email address | ~$0.10 |
|
|
78
99
|
| `oneshot_verify_email` | Verify email deliverability | ~$0.01 |
|
|
100
|
+
|
|
101
|
+
### Commerce
|
|
102
|
+
|
|
103
|
+
| Tool | Description | Cost |
|
|
104
|
+
|------|-------------|------|
|
|
105
|
+
| `oneshot_commerce_search` | Search for products | Free |
|
|
106
|
+
| `oneshot_commerce_buy` | Purchase products | Product price + fee |
|
|
107
|
+
|
|
108
|
+
### Account
|
|
109
|
+
|
|
110
|
+
| Tool | Description | Cost |
|
|
111
|
+
|------|-------------|------|
|
|
79
112
|
| `oneshot_notifications` | List agent notifications | Free |
|
|
80
|
-
| `oneshot_mark_notification_read` | Mark notification read | Free |
|
|
113
|
+
| `oneshot_mark_notification_read` | Mark notification as read | Free |
|
|
114
|
+
| `oneshot_get_balance` | Get USDC wallet balance | Free |
|
|
81
115
|
|
|
82
116
|
## Tool Examples
|
|
83
117
|
|
|
84
118
|
### Send an Email
|
|
85
119
|
|
|
86
120
|
```
|
|
87
|
-
Use
|
|
121
|
+
Use oneshot_email:
|
|
88
122
|
- to: "user@example.com"
|
|
89
123
|
- subject: "Hello from AI"
|
|
90
124
|
- body: "<h1>Hello!</h1><p>This email was sent by an AI agent.</p>"
|
|
@@ -93,7 +127,7 @@ Use the oneshot_email tool to send an email:
|
|
|
93
127
|
### Make a Phone Call
|
|
94
128
|
|
|
95
129
|
```
|
|
96
|
-
Use
|
|
130
|
+
Use oneshot_voice:
|
|
97
131
|
- target_number: "+14155551234"
|
|
98
132
|
- objective: "Call the restaurant and make a reservation for 2 people at 7pm tonight"
|
|
99
133
|
- caller_persona: "A polite assistant calling on behalf of John"
|
|
@@ -102,7 +136,7 @@ Use the oneshot_voice tool to make a call:
|
|
|
102
136
|
### Send an SMS
|
|
103
137
|
|
|
104
138
|
```
|
|
105
|
-
Use
|
|
139
|
+
Use oneshot_sms:
|
|
106
140
|
- to_number: "+14155551234"
|
|
107
141
|
- message: "Your order has shipped! Track it at: https://example.com/track/123"
|
|
108
142
|
```
|
|
@@ -110,20 +144,44 @@ Use the oneshot_sms tool:
|
|
|
110
144
|
### Research a Topic
|
|
111
145
|
|
|
112
146
|
```
|
|
113
|
-
Use
|
|
114
|
-
- topic: "What are the latest developments in quantum computing
|
|
147
|
+
Use oneshot_research:
|
|
148
|
+
- topic: "What are the latest developments in quantum computing?"
|
|
115
149
|
- depth: "deep"
|
|
116
150
|
```
|
|
117
151
|
|
|
152
|
+
### Search for People
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
Use oneshot_people_search:
|
|
156
|
+
- job_titles: ["CTO", "VP Engineering"]
|
|
157
|
+
- companies: ["Stripe", "Square"]
|
|
158
|
+
- location: ["San Francisco"]
|
|
159
|
+
- limit: 10
|
|
160
|
+
```
|
|
161
|
+
|
|
118
162
|
### Find Someone's Email
|
|
119
163
|
|
|
120
164
|
```
|
|
121
|
-
Use
|
|
165
|
+
Use oneshot_find_email:
|
|
122
166
|
- first_name: "John"
|
|
123
167
|
- last_name: "Smith"
|
|
124
168
|
- company_domain: "example.com"
|
|
125
169
|
```
|
|
126
170
|
|
|
171
|
+
### Check Wallet Balance
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
Use oneshot_get_balance (no parameters needed)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Read Inbox
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
Use oneshot_inbox_list:
|
|
181
|
+
- limit: 10
|
|
182
|
+
- include_body: true
|
|
183
|
+
```
|
|
184
|
+
|
|
127
185
|
## Funding Your Agent
|
|
128
186
|
|
|
129
187
|
Fund your agent wallet at [oneshotagent.com](https://oneshotagent.com) with USDC on Base network.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { OneShot } from "@oneshot-agent/sdk";
|
|
3
|
+
export declare const inboxListTool: Tool;
|
|
4
|
+
export declare const inboxGetTool: Tool;
|
|
5
|
+
export declare function handleInboxList(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").InboxListResult>;
|
|
6
|
+
export declare function handleInboxGet(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").InboxEmail>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const inboxListTool = {
|
|
2
|
+
name: "oneshot_inbox_list",
|
|
3
|
+
description: "List emails in the agent's inbox. Free. Shows received emails with sender, subject, and timestamp.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
since: {
|
|
8
|
+
type: "string",
|
|
9
|
+
description: "ISO timestamp to filter emails received after this time",
|
|
10
|
+
},
|
|
11
|
+
limit: {
|
|
12
|
+
type: "number",
|
|
13
|
+
description: "Maximum number of emails to return (default: 50)",
|
|
14
|
+
},
|
|
15
|
+
include_body: {
|
|
16
|
+
type: "boolean",
|
|
17
|
+
description: "Include email body in results (default: false)",
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
export const inboxGetTool = {
|
|
23
|
+
name: "oneshot_inbox_get",
|
|
24
|
+
description: "Get a specific email by ID. Free. Returns full email including body and attachments.",
|
|
25
|
+
inputSchema: {
|
|
26
|
+
type: "object",
|
|
27
|
+
properties: {
|
|
28
|
+
email_id: {
|
|
29
|
+
type: "string",
|
|
30
|
+
description: "Email ID to retrieve",
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
required: ["email_id"],
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
export async function handleInboxList(agent, args) {
|
|
37
|
+
return agent.inboxList({
|
|
38
|
+
since: args.since,
|
|
39
|
+
limit: args.limit,
|
|
40
|
+
include_body: args.include_body,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
export async function handleInboxGet(agent, args) {
|
|
44
|
+
return agent.inboxGet(args.email_id);
|
|
45
|
+
}
|
package/dist/tools/index.js
CHANGED
|
@@ -2,36 +2,62 @@ import { emailTool, handleEmail } from "./email.js";
|
|
|
2
2
|
import { voiceTool, handleVoice } from "./voice.js";
|
|
3
3
|
import { smsTool, handleSms } from "./sms.js";
|
|
4
4
|
import { researchTool, handleResearch } from "./research.js";
|
|
5
|
+
import { peopleSearchTool, handlePeopleSearch } from "./people.js";
|
|
5
6
|
import { commerceSearchTool, commerceBuyTool, handleCommerceSearch, handleCommerceBuy } from "./commerce.js";
|
|
6
7
|
import { enrichProfileTool, findEmailTool, verifyEmailTool, handleEnrichProfile, handleFindEmail, handleVerifyEmail } from "./enrichment.js";
|
|
8
|
+
import { inboxListTool, inboxGetTool, handleInboxList, handleInboxGet } from "./inbox.js";
|
|
9
|
+
import { smsInboxListTool, smsInboxGetTool, handleSmsInboxList, handleSmsInboxGet } from "./sms-inbox.js";
|
|
7
10
|
import { notificationsTool, markReadTool, handleNotifications, handleMarkRead } from "./notifications.js";
|
|
11
|
+
import { getBalanceTool, handleGetBalance } from "./wallet.js";
|
|
8
12
|
// All available tools
|
|
9
13
|
export const tools = [
|
|
14
|
+
// Communication
|
|
10
15
|
emailTool,
|
|
11
16
|
voiceTool,
|
|
12
17
|
smsTool,
|
|
18
|
+
// Inbox
|
|
19
|
+
inboxListTool,
|
|
20
|
+
inboxGetTool,
|
|
21
|
+
smsInboxListTool,
|
|
22
|
+
smsInboxGetTool,
|
|
23
|
+
// Research & Enrichment
|
|
13
24
|
researchTool,
|
|
14
|
-
|
|
15
|
-
commerceBuyTool,
|
|
25
|
+
peopleSearchTool,
|
|
16
26
|
enrichProfileTool,
|
|
17
27
|
findEmailTool,
|
|
18
28
|
verifyEmailTool,
|
|
29
|
+
// Commerce
|
|
30
|
+
commerceSearchTool,
|
|
31
|
+
commerceBuyTool,
|
|
32
|
+
// Account
|
|
19
33
|
notificationsTool,
|
|
20
34
|
markReadTool,
|
|
35
|
+
getBalanceTool,
|
|
21
36
|
];
|
|
22
37
|
// Tool handlers map
|
|
23
38
|
const handlers = {
|
|
39
|
+
// Communication
|
|
24
40
|
"oneshot_email": handleEmail,
|
|
25
41
|
"oneshot_voice": handleVoice,
|
|
26
42
|
"oneshot_sms": handleSms,
|
|
43
|
+
// Inbox
|
|
44
|
+
"oneshot_inbox_list": handleInboxList,
|
|
45
|
+
"oneshot_inbox_get": handleInboxGet,
|
|
46
|
+
"oneshot_sms_inbox_list": handleSmsInboxList,
|
|
47
|
+
"oneshot_sms_inbox_get": handleSmsInboxGet,
|
|
48
|
+
// Research & Enrichment
|
|
27
49
|
"oneshot_research": handleResearch,
|
|
28
|
-
"
|
|
29
|
-
"oneshot_commerce_buy": handleCommerceBuy,
|
|
50
|
+
"oneshot_people_search": handlePeopleSearch,
|
|
30
51
|
"oneshot_enrich_profile": handleEnrichProfile,
|
|
31
52
|
"oneshot_find_email": handleFindEmail,
|
|
32
53
|
"oneshot_verify_email": handleVerifyEmail,
|
|
54
|
+
// Commerce
|
|
55
|
+
"oneshot_commerce_search": handleCommerceSearch,
|
|
56
|
+
"oneshot_commerce_buy": handleCommerceBuy,
|
|
57
|
+
// Account
|
|
33
58
|
"oneshot_notifications": handleNotifications,
|
|
34
59
|
"oneshot_mark_notification_read": handleMarkRead,
|
|
60
|
+
"oneshot_get_balance": handleGetBalance,
|
|
35
61
|
};
|
|
36
62
|
export async function handleToolCall(agent, toolName, args) {
|
|
37
63
|
const handler = handlers[toolName];
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { OneShot } from "@oneshot-agent/sdk";
|
|
3
|
+
export declare const peopleSearchTool: Tool;
|
|
4
|
+
export declare function handlePeopleSearch(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").PeopleSearchResult>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export const peopleSearchTool = {
|
|
2
|
+
name: "oneshot_people_search",
|
|
3
|
+
description: "Search for people by job title, company, location, skills, etc. Returns professional profiles. Costs ~$0.10 per result.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
job_titles: {
|
|
8
|
+
type: "array",
|
|
9
|
+
items: { type: "string" },
|
|
10
|
+
description: "Job titles to search for (e.g., ['CEO', 'CTO'])",
|
|
11
|
+
},
|
|
12
|
+
keywords: {
|
|
13
|
+
type: "array",
|
|
14
|
+
items: { type: "string" },
|
|
15
|
+
description: "Keywords to match in profiles",
|
|
16
|
+
},
|
|
17
|
+
companies: {
|
|
18
|
+
type: "array",
|
|
19
|
+
items: { type: "string" },
|
|
20
|
+
description: "Company names to filter by",
|
|
21
|
+
},
|
|
22
|
+
location: {
|
|
23
|
+
type: "array",
|
|
24
|
+
items: { type: "string" },
|
|
25
|
+
description: "Locations to filter by (e.g., ['San Francisco', 'New York'])",
|
|
26
|
+
},
|
|
27
|
+
skills: {
|
|
28
|
+
type: "array",
|
|
29
|
+
items: { type: "string" },
|
|
30
|
+
description: "Skills to match",
|
|
31
|
+
},
|
|
32
|
+
seniority: {
|
|
33
|
+
type: "array",
|
|
34
|
+
items: { type: "string" },
|
|
35
|
+
description: "Seniority levels (e.g., ['senior', 'executive'])",
|
|
36
|
+
},
|
|
37
|
+
industry: {
|
|
38
|
+
type: "array",
|
|
39
|
+
items: { type: "string" },
|
|
40
|
+
description: "Industries to filter by",
|
|
41
|
+
},
|
|
42
|
+
company_size: {
|
|
43
|
+
type: "string",
|
|
44
|
+
description: "Company size filter (e.g., '1-10', '11-50', '51-200', '201-500', '501-1000', '1001+')",
|
|
45
|
+
},
|
|
46
|
+
limit: {
|
|
47
|
+
type: "number",
|
|
48
|
+
description: "Maximum number of results (default: 100)",
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
export async function handlePeopleSearch(agent, args) {
|
|
54
|
+
return agent.peopleSearch({
|
|
55
|
+
job_titles: args.job_titles,
|
|
56
|
+
keywords: args.keywords,
|
|
57
|
+
companies: args.companies,
|
|
58
|
+
location: args.location,
|
|
59
|
+
skills: args.skills,
|
|
60
|
+
seniority: args.seniority,
|
|
61
|
+
industry: args.industry,
|
|
62
|
+
company_size: args.company_size,
|
|
63
|
+
limit: args.limit,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { OneShot } from "@oneshot-agent/sdk";
|
|
3
|
+
export declare const smsInboxListTool: Tool;
|
|
4
|
+
export declare const smsInboxGetTool: Tool;
|
|
5
|
+
export declare function handleSmsInboxList(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").SmsInboxResult>;
|
|
6
|
+
export declare function handleSmsInboxGet(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").SmsInboxMessage>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const smsInboxListTool = {
|
|
2
|
+
name: "oneshot_sms_inbox_list",
|
|
3
|
+
description: "List inbound SMS messages. Free. Shows received text messages with sender and content.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
since: {
|
|
8
|
+
type: "string",
|
|
9
|
+
description: "ISO timestamp to filter messages received after this time",
|
|
10
|
+
},
|
|
11
|
+
limit: {
|
|
12
|
+
type: "number",
|
|
13
|
+
description: "Maximum number of messages to return (default: 50, max: 100)",
|
|
14
|
+
},
|
|
15
|
+
from: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: "Filter by sender phone number",
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
export const smsInboxGetTool = {
|
|
23
|
+
name: "oneshot_sms_inbox_get",
|
|
24
|
+
description: "Get a specific SMS message by ID. Free. Returns full message details.",
|
|
25
|
+
inputSchema: {
|
|
26
|
+
type: "object",
|
|
27
|
+
properties: {
|
|
28
|
+
message_id: {
|
|
29
|
+
type: "string",
|
|
30
|
+
description: "SMS message ID to retrieve",
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
required: ["message_id"],
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
export async function handleSmsInboxList(agent, args) {
|
|
37
|
+
return agent.smsInboxList({
|
|
38
|
+
since: args.since,
|
|
39
|
+
limit: args.limit,
|
|
40
|
+
from: args.from,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
export async function handleSmsInboxGet(agent, args) {
|
|
44
|
+
return agent.smsInboxGet(args.message_id);
|
|
45
|
+
}
|
package/dist/tools/voice.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const voiceTool = {
|
|
2
2
|
name: "oneshot_voice",
|
|
3
|
-
description: "Make
|
|
3
|
+
description: "Make a phone call. Costs ~$0.25/minute. The call will follow the provided objective.",
|
|
4
4
|
inputSchema: {
|
|
5
5
|
type: "object",
|
|
6
6
|
properties: {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { OneShot } from "@oneshot-agent/sdk";
|
|
3
|
+
export declare const getBalanceTool: Tool;
|
|
4
|
+
export declare function handleGetBalance(agent: OneShot, _args: Record<string, unknown>): Promise<{
|
|
5
|
+
balance: string;
|
|
6
|
+
currency: string;
|
|
7
|
+
address: string;
|
|
8
|
+
testMode: boolean;
|
|
9
|
+
}>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const getBalanceTool = {
|
|
2
|
+
name: "oneshot_get_balance",
|
|
3
|
+
description: "Get the agent's USDC balance. Free. Returns balance in human-readable format.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {},
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
export async function handleGetBalance(agent, _args) {
|
|
10
|
+
const balance = await agent.getBalance(agent.usdcAddress);
|
|
11
|
+
return {
|
|
12
|
+
balance,
|
|
13
|
+
currency: "USDC",
|
|
14
|
+
address: agent.address,
|
|
15
|
+
testMode: agent.isTestMode,
|
|
16
|
+
};
|
|
17
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneshot-agent/mcp-server",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "MCP server for OneShot - commercial actions for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,7 +13,13 @@
|
|
|
13
13
|
"dev": "tsc --watch",
|
|
14
14
|
"prepublishOnly": "npm run build"
|
|
15
15
|
},
|
|
16
|
-
"keywords": [
|
|
16
|
+
"keywords": [
|
|
17
|
+
"mcp",
|
|
18
|
+
"oneshot",
|
|
19
|
+
"ai-agent",
|
|
20
|
+
"claude",
|
|
21
|
+
"tools"
|
|
22
|
+
],
|
|
17
23
|
"author": "OneShot",
|
|
18
24
|
"license": "MIT",
|
|
19
25
|
"dependencies": {
|
|
@@ -28,5 +34,9 @@
|
|
|
28
34
|
"engines": {
|
|
29
35
|
"node": ">=18"
|
|
30
36
|
},
|
|
31
|
-
"files": [
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
"bin",
|
|
40
|
+
"README.md"
|
|
41
|
+
]
|
|
32
42
|
}
|