@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.
@@ -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: "Use this tool when the user expresses an interest in earning money, demonstrates a skill, or has a vague need. It starts or continues a conversational qualification flow. \n\n" +
120
- "Examples:\n" +
121
- "- \"I want to make money\"\n" +
122
- "- \"I know how to fix bikes\"\n" +
123
- "- \"I need help with something\"\n",
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 tool to create new resources like tasks. \n\n" +
156
- "Resources:\n" +
157
- "- `task`: Create a task for a worker. Requires title, description, budget. Supports `skills` list. \n" +
158
- "- `worker_profile`: (For future use) Create a worker profile.\n",
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 for tasks, workers, or account info.\n",
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: "Update details of an existing resource.",
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: "Cancel or terminate a process or resource (e.g., a task).",
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: "Use this tool to find workers or explore possibilities. You don't need a perfect query; we'll provide suggestions. Great for 'I need help with X' vague requests.",
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: "Management dashboard actions like listing tasks, checking alerts, etc.",
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: "Make any request to the Haptic Paper API. Use this if other tools don't cover your use case.\n\n" + apiDoc,
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.17",
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.17",
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.17",
40
+ "version": "1.0.18",
41
41
  "transport": {
42
42
  "type": "stdio"
43
43
  },