@hapticpaper/mcp-server 1.0.17 → 1.0.18
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/dist/tools/verbs.js +75 -15
- package/package.json +1 -1
- package/server.json +2 -2
package/dist/tools/verbs.js
CHANGED
|
@@ -116,11 +116,18 @@ export function registerVerbTools(server, client) {
|
|
|
116
116
|
// 1. intent
|
|
117
117
|
server.registerTool("intent", {
|
|
118
118
|
title: "Signal Intent or Skill",
|
|
119
|
-
description: "
|
|
120
|
-
"
|
|
121
|
-
"- \"I want to make money
|
|
122
|
-
"- \"I know
|
|
123
|
-
"- \"I need help
|
|
119
|
+
description: "CORE TOOL: The primary entry point for users wanting to earn money or needing generic help.\n\n" +
|
|
120
|
+
"WHEN TO USE:\n" +
|
|
121
|
+
"- User says \"I want to work\" or \"How can I make money?\"\n" +
|
|
122
|
+
"- User mentions a skill: \"I know about plumbing\" or \"I can review websites\"\n" +
|
|
123
|
+
"- User has a vague request: \"I need help\" (without specifics)\n\n" +
|
|
124
|
+
"WHAT IT DOES:\n" +
|
|
125
|
+
"- Anlayzes the user's intent from their message.\n" +
|
|
126
|
+
"- Starts or continues an interactive qualification/profiling session.\n" +
|
|
127
|
+
"- Returns the next question to ask the user to build their profile.\n\n" +
|
|
128
|
+
"USAGE TIPS:\n" +
|
|
129
|
+
"- Pass the full `message` from the user.\n" +
|
|
130
|
+
"- If you have a `sessionId` from a previous turn, include it to continue the flow.",
|
|
124
131
|
inputSchema: IntentSchema,
|
|
125
132
|
_meta: toolDescriptorMeta('Analyzing intent...', 'Intent processed'),
|
|
126
133
|
}, async (args, extra) => {
|
|
@@ -152,10 +159,20 @@ export function registerVerbTools(server, client) {
|
|
|
152
159
|
// 2. create
|
|
153
160
|
server.registerTool("create", {
|
|
154
161
|
title: "Create Resource",
|
|
155
|
-
description: "Use this
|
|
156
|
-
"
|
|
157
|
-
"-
|
|
158
|
-
"-
|
|
162
|
+
description: "CORE TOOL: Use this to create new Haptic Paper resources, primarily TASKS.\n\n" +
|
|
163
|
+
"WHEN TO USE:\n" +
|
|
164
|
+
"- User wants to hire help: \"I need someone to fix my car\"\n" +
|
|
165
|
+
"- User defines a task: \"Post a job for $50 to review my resume\"\n\n" +
|
|
166
|
+
"RESOURCES:\n" +
|
|
167
|
+
"1. `task`: The main unit of work. Requires:\n" +
|
|
168
|
+
" - `title`: Short summary\n" +
|
|
169
|
+
" - `description`: Detailed instructions\n" +
|
|
170
|
+
" - `budget`: Amount to pay (in USD)\n" +
|
|
171
|
+
" - `skills`: (Optional) List of required skills (e.g., ['writing', 'auto repair'])\n" +
|
|
172
|
+
"2. `worker_profile`: (Rarely used directly) To create a worker profile manually.\n\n" +
|
|
173
|
+
"USAGE TIPS:\n" +
|
|
174
|
+
"- Extract as much detail as possible into `description`.\n" +
|
|
175
|
+
"- If `budget` is missing, ask the user or suggest a reasonable default based on `get_estimate`.",
|
|
159
176
|
inputSchema: CreateSchema,
|
|
160
177
|
_meta: toolDescriptorMeta('Creating resource...', 'Resource created', ['tasks:write']),
|
|
161
178
|
}, async (args, extra) => {
|
|
@@ -190,7 +207,18 @@ export function registerVerbTools(server, client) {
|
|
|
190
207
|
// 3. get
|
|
191
208
|
server.registerTool("get", {
|
|
192
209
|
title: "Get Resource",
|
|
193
|
-
description: "Retrieve details
|
|
210
|
+
description: "CORE TOOL: Retrieve details about a specific entity.\n\n" +
|
|
211
|
+
"WHEN TO USE:\n" +
|
|
212
|
+
"- User asks about a specific task: \"What is the status of task X?\"\n" +
|
|
213
|
+
"- User checks their balance: \"How much money do I have?\"\n" +
|
|
214
|
+
"- User needs a price quote: \"How much would it cost to clean my house?\"\n\n" +
|
|
215
|
+
"RESOURCES:\n" +
|
|
216
|
+
"- `task`: Get full details of a task (requires `id`).\n" +
|
|
217
|
+
"- `worker`: Get public profile of a worker (requires `id`).\n" +
|
|
218
|
+
"- `account` / `balance`: Get the CURRENT user's account info (balance, email). No ID needed.\n" +
|
|
219
|
+
"- `estimate`: Calculate a price/time estimate. Requires `estimateParams` (description, location).\n\n" +
|
|
220
|
+
"USAGE TIPS:\n" +
|
|
221
|
+
"- Use `resource: 'estimate'` BEFORE creating a task to give the user a price range.",
|
|
194
222
|
inputSchema: GetSchema,
|
|
195
223
|
_meta: toolDescriptorMeta('Fetching...', 'Ready', ['tasks:read', 'workers:read']),
|
|
196
224
|
}, async (args, extra) => {
|
|
@@ -247,7 +275,14 @@ export function registerVerbTools(server, client) {
|
|
|
247
275
|
// 4. update
|
|
248
276
|
server.registerTool("update", {
|
|
249
277
|
title: "Update Resource",
|
|
250
|
-
description: "
|
|
278
|
+
description: "CORE TOOL: Modify an existing resource.\n\n" +
|
|
279
|
+
"WHEN TO USE:\n" +
|
|
280
|
+
"- User wants to change task details: \"Change the budget to $100\"\n" +
|
|
281
|
+
"- User wants to add requirements: \"Require the worker to speak Spanish\"\n" +
|
|
282
|
+
"- User cancels/closes a task (setting status).\n\n" +
|
|
283
|
+
"USAGE TIPS:\n" +
|
|
284
|
+
"- Requires valid `id` of the resource.\n" +
|
|
285
|
+
"- Only provide the fields you want to change in `data`; others remain untouched.",
|
|
251
286
|
inputSchema: UpdateSchema,
|
|
252
287
|
_meta: toolDescriptorMeta('Updating...', 'Updated', ['tasks:write']),
|
|
253
288
|
}, async (args, extra) => {
|
|
@@ -275,7 +310,14 @@ export function registerVerbTools(server, client) {
|
|
|
275
310
|
// 5. terminate
|
|
276
311
|
server.registerTool("terminate", {
|
|
277
312
|
title: "Terminate Resource",
|
|
278
|
-
description: "
|
|
313
|
+
description: "Stop or Cancel a resource/process.\n\n" +
|
|
314
|
+
"WHEN TO USE:\n" +
|
|
315
|
+
"- User says \"Cancel task X\"\n" +
|
|
316
|
+
"- User wants to stop a running job.\n" +
|
|
317
|
+
"- THIS IS A DESTRUCTIVE ACTION.\n\n" +
|
|
318
|
+
"USAGE TIPS:\n" +
|
|
319
|
+
"- Requires `id` of the task.\n" +
|
|
320
|
+
"- Provide a `reason` if possible for audit logs.",
|
|
279
321
|
inputSchema: TerminateSchema,
|
|
280
322
|
_meta: toolDescriptorMeta('Terminating...', 'Terminated', ['tasks:write']),
|
|
281
323
|
}, async (args, extra) => {
|
|
@@ -298,7 +340,14 @@ export function registerVerbTools(server, client) {
|
|
|
298
340
|
// 6. search_and_browse
|
|
299
341
|
server.registerTool("search_and_browse", {
|
|
300
342
|
title: "Search and Browse",
|
|
301
|
-
description: "
|
|
343
|
+
description: "Discovery tool for finding people or categories.\n\n" +
|
|
344
|
+
"WHEN TO USE:\n" +
|
|
345
|
+
"- \"Find me a plumber\"\n" +
|
|
346
|
+
"- \"Who can help with React coding?\"\n" +
|
|
347
|
+
"- \"What kind of tasks can I post?\" (browse categories)\n\n" +
|
|
348
|
+
"RESOURCES:\n" +
|
|
349
|
+
"- `workers`: Search for workers. Input `query` text or `skills` list.\n" +
|
|
350
|
+
"- `skill_categories`: Browse available job types and pricing standards.",
|
|
302
351
|
inputSchema: SearchAndBrowseSchema,
|
|
303
352
|
_meta: toolDescriptorMeta('Searching...', 'Results found', ['workers:read']),
|
|
304
353
|
}, async (args, extra) => {
|
|
@@ -340,7 +389,13 @@ export function registerVerbTools(server, client) {
|
|
|
340
389
|
// 7. interact_with_haptic
|
|
341
390
|
server.registerTool("interact_with_haptic", {
|
|
342
391
|
title: "Interact with Haptic",
|
|
343
|
-
description: "
|
|
392
|
+
description: "Dashboard for managing the user's personal workflow.\n\n" +
|
|
393
|
+
"WHEN TO USE:\n" +
|
|
394
|
+
"- \"Show my tasks\"\n" +
|
|
395
|
+
"- \"What jobs have I posted?\"\n" +
|
|
396
|
+
"- \"Check status of my requests\"\n\n" +
|
|
397
|
+
"ACTIONS:\n" +
|
|
398
|
+
"- `list_my_tasks`: Returns a list of tasks created by YOU (the user). returns status, title, budget, ID.",
|
|
344
399
|
inputSchema: InteractWithHapticSchema,
|
|
345
400
|
_meta: toolDescriptorMeta('Interacting...', 'Done', ['tasks:read']),
|
|
346
401
|
}, async (args, extra) => {
|
|
@@ -376,7 +431,12 @@ API CHEATSHEET:
|
|
|
376
431
|
`.trim();
|
|
377
432
|
server.registerTool("api", {
|
|
378
433
|
title: "Raw API Access",
|
|
379
|
-
description: "
|
|
434
|
+
description: "ADVANCED TOOL: Direct access to Haptic Paper API.\n\n" +
|
|
435
|
+
"WHEN TO USE:\n" +
|
|
436
|
+
"- No other tool covers your specific need.\n" +
|
|
437
|
+
"- You need to debug or verify raw data.\n" +
|
|
438
|
+
"- You need to access an endpoint not exposed by other tools.\n\n" +
|
|
439
|
+
apiDoc,
|
|
380
440
|
inputSchema: ApiSchema,
|
|
381
441
|
_meta: toolDescriptorMeta('Calling API...', 'Call complete'),
|
|
382
442
|
}, async (args, extra) => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hapticpaper/mcp-server",
|
|
3
3
|
"mcpName": "com.hapticpaper/mcp",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.18",
|
|
5
5
|
"description": "Official MCP Server for Haptic Paper - Connect your account to create human tasks from agentic pipelines.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
package/server.json
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"subfolder": "packages/mcp-server"
|
|
26
26
|
},
|
|
27
27
|
"websiteUrl": "https://hapticpaper.com/developer",
|
|
28
|
-
"version": "1.0.
|
|
28
|
+
"version": "1.0.18",
|
|
29
29
|
"remotes": [
|
|
30
30
|
{
|
|
31
31
|
"type": "streamable-http",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"registryType": "npm",
|
|
38
38
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
39
39
|
"identifier": "@hapticpaper/mcp-server",
|
|
40
|
-
"version": "1.0.
|
|
40
|
+
"version": "1.0.18",
|
|
41
41
|
"transport": {
|
|
42
42
|
"type": "stdio"
|
|
43
43
|
},
|