@oneshot-agent/mcp-server 0.37.0 → 0.38.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 +5 -1
- package/dist/index.js +1 -1
- package/dist/tools/annotations.js +1 -1
- package/dist/tools/commerce.d.ts +2 -2
- package/dist/tools/commerce.js +5 -5
- package/dist/tools/enrichment.js +3 -1
- package/dist/tools/index.js +3 -3
- package/dist/tools/lookup-manifest.generated.js +74 -5
- package/dist/tools/nyne.js +3 -1
- package/dist/tools/people.js +3 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -202,7 +202,7 @@ Soul Hunt is a separate service (`api.soulhunt.ai`) from the main OneShot API; t
|
|
|
202
202
|
|
|
203
203
|
| Tool | Description |
|
|
204
204
|
|------|-------------|
|
|
205
|
-
| `
|
|
205
|
+
| `oneshot_product_find` | Search for products |
|
|
206
206
|
| `oneshot_commerce_buy` | Purchase products |
|
|
207
207
|
|
|
208
208
|
### Build
|
|
@@ -365,3 +365,7 @@ timeouts.
|
|
|
365
365
|
- [Python SDK (LangChain)](https://pypi.org/project/langchain-oneshot/)
|
|
366
366
|
- [Python SDK (Core)](https://pypi.org/project/oneshot-python/)
|
|
367
367
|
- [GitHub](https://github.com/oneshot-agent/sdk)
|
|
368
|
+
|
|
369
|
+
## Optional phone lookup
|
|
370
|
+
|
|
371
|
+
`person_find`, `person_profile`, and `person_dossier` accept `include_phone`, off by default. It adds $0.10 × the requested search limit (default 100 → $10), or $0.10 for profile/dossier, for up to that many people with no promised hit. Existing source numbers and published business or record numbers remain available without opting in. Fallbacks and callbacks cost nothing extra; a completed no-match is charged and a failed job is refunded. Use a boolean `true` / `false`. The full quote is checked before payment.
|
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.38.0", // keep in sync with package.json; guarded by version.test.ts
|
|
54
54
|
}, {
|
|
55
55
|
capabilities: {
|
|
56
56
|
tools: {},
|
|
@@ -41,7 +41,7 @@ export const TOOL_ANNOTATIONS = {
|
|
|
41
41
|
oneshot_business_find: read("Find local businesses", OPEN),
|
|
42
42
|
oneshot_business_resolve: read("Look up a local business", OPEN),
|
|
43
43
|
oneshot_record_solicitations_find: read("Find government contracts", OPEN),
|
|
44
|
-
|
|
44
|
+
oneshot_product_find: read("Search products", OPEN),
|
|
45
45
|
oneshot_commerce_buy: write("Buy a product", OPEN),
|
|
46
46
|
oneshot_compute: write("Start a goal", OPEN),
|
|
47
47
|
oneshot_compute_status: read("Check a goal", OWN),
|
package/dist/tools/commerce.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
2
|
import type { OneShot } from "@oneshot-agent/sdk";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const productFindTool: Tool;
|
|
4
4
|
export declare const commerceBuyTool: Tool;
|
|
5
|
-
export declare function
|
|
5
|
+
export declare function handleProductFind(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").ProductFindResult>;
|
|
6
6
|
export declare function handleCommerceBuy(agent: OneShot, args: Record<string, unknown>): Promise<import("@oneshot-agent/sdk").CommerceBuyResult>;
|
package/dist/tools/commerce.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export const
|
|
2
|
-
name: "
|
|
3
|
-
description: "Search for products to purchase.
|
|
1
|
+
export const productFindTool = {
|
|
2
|
+
name: "oneshot_product_find",
|
|
3
|
+
description: "Search for products to purchase. Each search is paid, separately from buying.",
|
|
4
4
|
inputSchema: {
|
|
5
5
|
type: "object",
|
|
6
6
|
properties: {
|
|
@@ -58,8 +58,8 @@ export const commerceBuyTool = {
|
|
|
58
58
|
required: ["product_url", "shipping_address"],
|
|
59
59
|
},
|
|
60
60
|
};
|
|
61
|
-
export async function
|
|
62
|
-
return agent.
|
|
61
|
+
export async function handleProductFind(agent, args) {
|
|
62
|
+
return agent.productFind({
|
|
63
63
|
query: args.query,
|
|
64
64
|
limit: args.limit,
|
|
65
65
|
});
|
package/dist/tools/enrichment.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export const personProfileTool = {
|
|
2
2
|
name: "oneshot_person_profile",
|
|
3
|
-
description: "Enrich a person's profile from LinkedIn URL, email, or name. Returns job title, company, social links, etc. Paid tool.",
|
|
3
|
+
description: "Enrich a person's profile from LinkedIn URL, email, or name. Returns job title, company, social links, etc. Paid tool. Phone lookup is off by default. include_phone=true buys a lookup for up to one person at the add-on listed on the pricing page; no phone hit is guaranteed.",
|
|
4
4
|
inputSchema: {
|
|
5
5
|
type: "object",
|
|
6
6
|
properties: {
|
|
7
|
+
include_phone: { type: "boolean", default: false, description: "Phone lookup is off by default. include_phone=true buys a lookup for up to one person at the add-on listed on the pricing page; no phone hit is guaranteed." },
|
|
7
8
|
linkedin_url: {
|
|
8
9
|
type: "string",
|
|
9
10
|
description: "LinkedIn profile URL",
|
|
@@ -65,6 +66,7 @@ export const personEmailStatusTool = {
|
|
|
65
66
|
};
|
|
66
67
|
export async function handlePersonProfile(agent, args) {
|
|
67
68
|
return agent.personProfile({
|
|
69
|
+
includePhone: args.include_phone,
|
|
68
70
|
linkedin_url: args.linkedin_url,
|
|
69
71
|
email: args.email,
|
|
70
72
|
name: args.name,
|
package/dist/tools/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { voiceNumberProvisionTool, voiceNumbersTool, voiceInboundSetTool, voiceI
|
|
|
4
4
|
import { smsTool, handleSms } from "./sms.js";
|
|
5
5
|
import { researchTool, handleResearch } from "./research.js";
|
|
6
6
|
import { personFindTool, handlePersonFind } from "./people.js";
|
|
7
|
-
import {
|
|
7
|
+
import { productFindTool, commerceBuyTool, handleProductFind, handleCommerceBuy } from "./commerce.js";
|
|
8
8
|
import { personProfileTool, personEmailTool, personEmailStatusTool, handlePersonProfile, handlePersonEmail, handlePersonEmailStatus } from "./enrichment.js";
|
|
9
9
|
import { inboxListTool, inboxGetTool, handleInboxList, handleInboxGet } from "./inbox.js";
|
|
10
10
|
import { smsInboxListTool, smsInboxGetTool, handleSmsInboxList, handleSmsInboxGet } from "./sms-inbox.js";
|
|
@@ -56,7 +56,7 @@ const toolDefinitions = [
|
|
|
56
56
|
businessFindTool,
|
|
57
57
|
businessResolveTool,
|
|
58
58
|
recordSolicitationsFindTool,
|
|
59
|
-
|
|
59
|
+
productFindTool,
|
|
60
60
|
commerceBuyTool,
|
|
61
61
|
computeTool,
|
|
62
62
|
computeStatusTool,
|
|
@@ -146,7 +146,7 @@ const handlers = {
|
|
|
146
146
|
"oneshot_business_find": handleBusinessFind,
|
|
147
147
|
"oneshot_business_resolve": handleBusinessResolve,
|
|
148
148
|
"oneshot_record_solicitations_find": handleRecordSolicitationsFind,
|
|
149
|
-
"
|
|
149
|
+
"oneshot_product_find": handleProductFind,
|
|
150
150
|
"oneshot_commerce_buy": handleCommerceBuy,
|
|
151
151
|
"oneshot_compute": handleCompute,
|
|
152
152
|
"oneshot_compute_status": handleComputeStatus,
|
|
@@ -550,6 +550,76 @@ export const LOOKUP_MANIFEST = [
|
|
|
550
550
|
"longitude": -95.3698
|
|
551
551
|
}
|
|
552
552
|
},
|
|
553
|
+
{
|
|
554
|
+
"name": "market_freight_rate",
|
|
555
|
+
"path": "lookup/market-freight-rate",
|
|
556
|
+
"title": "Freight Rate Quote",
|
|
557
|
+
"description": "Quote the rate to move freight between two US ZIP codes on a pickup date, by mode: ltl shares a trailer by the pallet, ftl is a whole 53-foot dry van, van is a cargo van and box_truck is a 26-foot box truck. The answer is one carrier's quote for that lane: the rate for the whole shipment with every included service, the transit time, the pickup and delivery dates, when the quote lapses and whether it is firm or indicative. Use it to check a billed freight charge against the lane's going rate. For ltl give the pallets, the weight per pallet and the pallet dimensions; for van and box_truck give the pallets and the weight per pallet; for ftl the lane and date are enough. A lane the mode does not serve is refused as invalid input: try another mode. Covers US lanes. Nothing is booked.",
|
|
558
|
+
"inputSchema": {
|
|
559
|
+
"type": "object",
|
|
560
|
+
"properties": {
|
|
561
|
+
"origin_zip": {
|
|
562
|
+
"type": "string",
|
|
563
|
+
"description": "Where the freight is collected. 5-digit US ZIP code."
|
|
564
|
+
},
|
|
565
|
+
"destination_zip": {
|
|
566
|
+
"type": "string",
|
|
567
|
+
"description": "Where the freight is delivered. 5-digit US ZIP code."
|
|
568
|
+
},
|
|
569
|
+
"mode": {
|
|
570
|
+
"type": "string",
|
|
571
|
+
"enum": [
|
|
572
|
+
"ltl",
|
|
573
|
+
"ftl",
|
|
574
|
+
"van",
|
|
575
|
+
"box_truck"
|
|
576
|
+
],
|
|
577
|
+
"description": "How the freight moves. Picks the quote asked for; there is no default"
|
|
578
|
+
},
|
|
579
|
+
"pickup_date": {
|
|
580
|
+
"type": "string",
|
|
581
|
+
"description": "The day the freight is collected: today (UTC) or later. YYYY-MM-DD."
|
|
582
|
+
},
|
|
583
|
+
"pallets": {
|
|
584
|
+
"type": "integer",
|
|
585
|
+
"description": "How many pallets. Required for ltl, van (up to 3) and box_truck (up to 12); not needed for ftl. At least 1."
|
|
586
|
+
},
|
|
587
|
+
"weight_lbs_per_pallet": {
|
|
588
|
+
"type": "integer",
|
|
589
|
+
"description": "The weight of each pallet in pounds. Required for ltl, van (3,500 lb in all) and box_truck (10,000 lb in all); not needed for ftl. At least 1."
|
|
590
|
+
},
|
|
591
|
+
"length_in": {
|
|
592
|
+
"type": "integer",
|
|
593
|
+
"description": "The length of each pallet in inches. Required for ltl; ignored for other modes. At least 1."
|
|
594
|
+
},
|
|
595
|
+
"width_in": {
|
|
596
|
+
"type": "integer",
|
|
597
|
+
"description": "The width of each pallet in inches. Required for ltl; ignored for other modes. At least 1."
|
|
598
|
+
},
|
|
599
|
+
"height_in": {
|
|
600
|
+
"type": "integer",
|
|
601
|
+
"description": "The height of each pallet in inches, up to 85. Required for ltl; ignored for other modes. At least 1."
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
"required": [
|
|
605
|
+
"origin_zip",
|
|
606
|
+
"destination_zip",
|
|
607
|
+
"mode",
|
|
608
|
+
"pickup_date"
|
|
609
|
+
]
|
|
610
|
+
},
|
|
611
|
+
"example": {
|
|
612
|
+
"origin_zip": "90012",
|
|
613
|
+
"destination_zip": "94105",
|
|
614
|
+
"mode": "ltl",
|
|
615
|
+
"pickup_date": "2026-10-20",
|
|
616
|
+
"pallets": 2,
|
|
617
|
+
"weight_lbs_per_pallet": 800,
|
|
618
|
+
"length_in": 48,
|
|
619
|
+
"width_in": 40,
|
|
620
|
+
"height_in": 48
|
|
621
|
+
}
|
|
622
|
+
},
|
|
553
623
|
{
|
|
554
624
|
"name": "person_health_provider",
|
|
555
625
|
"path": "lookup/person-health-provider",
|
|
@@ -1147,7 +1217,7 @@ export const ROUTE_MANIFEST = [
|
|
|
1147
1217
|
"paid": true,
|
|
1148
1218
|
"readOnly": true,
|
|
1149
1219
|
"title": "Changes",
|
|
1150
|
-
"description": "What changed about one entity since a date, from the observations OneShot recorded: each change has the earlier value, the later value, when it was seen and the source. Give `attribute` (the name of a data tool that keeps history), `since`, and exactly one of `key` and `input`. A window with no changes is a completed, charged result. Paid per call.",
|
|
1220
|
+
"description": "What changed about one entity since a date, from the observations OneShot recorded: each change has the earlier value, the later value, when it was seen and the source. Give `attribute` (the name of a data tool that keeps history), `since`, and exactly one of `key` and `input`. For healthcare_exclusions, input selects a held monthly release and optional exact name/NPI/UPIN; returns row membership and full-row additions/removals, with coverage. A corrected row is removal plus addition, never person identity. A window with no changes is a completed, charged result. Paid per call.",
|
|
1151
1221
|
"inputSchema": {
|
|
1152
1222
|
"type": "object",
|
|
1153
1223
|
"properties": {
|
|
@@ -1161,7 +1231,7 @@ export const ROUTE_MANIFEST = [
|
|
|
1161
1231
|
},
|
|
1162
1232
|
"input": {
|
|
1163
1233
|
"type": "object",
|
|
1164
|
-
"description": "
|
|
1234
|
+
"description": "Stored search input; healthcare_exclusions accepts {entity: person|company, release: YYYY-MM, name? | npi? | upin?, previous_release?, after?}. Exact row membership, not person identity. Give exactly one of key and input"
|
|
1165
1235
|
},
|
|
1166
1236
|
"source": {
|
|
1167
1237
|
"type": "string",
|
|
@@ -1169,7 +1239,7 @@ export const ROUTE_MANIFEST = [
|
|
|
1169
1239
|
},
|
|
1170
1240
|
"since": {
|
|
1171
1241
|
"type": "string",
|
|
1172
|
-
"description": "First day of the window, YYYY-MM-DD"
|
|
1242
|
+
"description": "First day of the window, YYYY-MM-DD; optional for healthcare_exclusions monthly releases"
|
|
1173
1243
|
},
|
|
1174
1244
|
"until": {
|
|
1175
1245
|
"type": "string",
|
|
@@ -1181,8 +1251,7 @@ export const ROUTE_MANIFEST = [
|
|
|
1181
1251
|
}
|
|
1182
1252
|
},
|
|
1183
1253
|
"required": [
|
|
1184
|
-
"attribute"
|
|
1185
|
-
"since"
|
|
1254
|
+
"attribute"
|
|
1186
1255
|
]
|
|
1187
1256
|
},
|
|
1188
1257
|
"example": {
|
package/dist/tools/nyne.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export const personDossierTool = {
|
|
2
2
|
name: "oneshot_person_dossier",
|
|
3
|
-
description: "Get a person’s profile, known social accounts, articles, posts and written summary. Takes 2-5 minutes. Paid tool.",
|
|
3
|
+
description: "Get a person’s profile, known social accounts, articles, posts and written summary. Takes 2-5 minutes. Paid tool. Phone lookup is off by default. include_phone=true buys a lookup for up to one person at the add-on listed on the pricing page; no phone hit is guaranteed.",
|
|
4
4
|
inputSchema: {
|
|
5
5
|
type: "object",
|
|
6
6
|
properties: {
|
|
7
|
+
include_phone: { type: "boolean", default: false, description: "Phone lookup is off by default. include_phone=true buys a lookup for up to one person at the add-on listed on the pricing page; no phone hit is guaranteed." },
|
|
7
8
|
email: { type: "string", description: "Person's email address" },
|
|
8
9
|
social_media_url: { type: "string", description: "LinkedIn, Twitter, or other social profile URL" },
|
|
9
10
|
name: { type: "string", description: "Person's full name" },
|
|
@@ -76,6 +77,7 @@ export const personFollowersTool = {
|
|
|
76
77
|
export const PERSON_DOSSIER_TIMEOUT_SEC = 300;
|
|
77
78
|
export async function handlePersonDossier(agent, args) {
|
|
78
79
|
return agent.personDossier({
|
|
80
|
+
includePhone: args.include_phone,
|
|
79
81
|
email: args.email,
|
|
80
82
|
social_media_url: args.social_media_url,
|
|
81
83
|
name: args.name,
|
package/dist/tools/people.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export const personFindTool = {
|
|
2
2
|
name: "oneshot_person_find",
|
|
3
|
-
description: "Search for people by job title, company, location, skills, etc. Returns professional profiles. Paid tool — quote provided before payment.",
|
|
3
|
+
description: "Search for people by job title, company, location, skills, etc. Returns professional profiles. Paid tool — quote provided before payment. Phone lookup is off by default. include_phone=true buys lookups for up to the requested limit (default 100) at the per-person add-on listed on the pricing page; no phone hit is guaranteed.",
|
|
4
4
|
inputSchema: {
|
|
5
5
|
type: "object",
|
|
6
6
|
properties: {
|
|
7
|
+
include_phone: { type: "boolean", default: false, description: "Phone lookup is off by default. include_phone=true buys lookups for up to the requested limit (default 100) at the per-person add-on listed on the pricing page; no phone hit is guaranteed." },
|
|
7
8
|
job_titles: {
|
|
8
9
|
type: "array",
|
|
9
10
|
items: { type: "string" },
|
|
@@ -57,6 +58,7 @@ export const personFindTool = {
|
|
|
57
58
|
};
|
|
58
59
|
export async function handlePersonFind(agent, args) {
|
|
59
60
|
return agent.personFind({
|
|
61
|
+
includePhone: args.include_phone,
|
|
60
62
|
job_titles: args.job_titles,
|
|
61
63
|
keywords: args.keywords,
|
|
62
64
|
companies: args.companies,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneshot-agent/mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.38.0",
|
|
4
4
|
"description": "MCP server for OneShot - 81 tools for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@coinbase/cdp-sdk": "1.45.0",
|
|
28
28
|
"@modelcontextprotocol/sdk": "1.27.1",
|
|
29
|
-
"@oneshot-agent/sdk": "^0.
|
|
29
|
+
"@oneshot-agent/sdk": "^0.53.0",
|
|
30
30
|
"zod": "3.25.76"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|