byclaw-mcp 0.4.15 → 0.4.16

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.
Files changed (2) hide show
  1. package/dist/index.js +20 -0
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -142,6 +142,11 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
142
142
  required: ['query'],
143
143
  },
144
144
  },
145
+ {
146
+ name: 'whoami',
147
+ description: TOOL_PREFIX + 'Return the active byclaw agent: its codename (e.g. #1949-H), personality (smartpicker / dealmaker / luxpicker / vibechecker / quickshooter), tagline, tone, and review style. Use when the user asks "which agent am I using", "what persona is searching for me", or "wer entscheidet hier". Cheap, no Anthropic call. Every shop / search_products / test_web_search response also surfaces this in the `agent` and `advisor_profile` fields.',
148
+ inputSchema: { type: 'object', properties: {} },
149
+ },
145
150
  {
146
151
  name: 'leave_review',
147
152
  description: TOOL_PREFIX + 'Write a product review. Only call if the user explicitly asks to leave a review. Only de and en allowed.',
@@ -322,6 +327,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
322
327
  return { content: [{ type: 'text', text: JSON.stringify({
323
328
  _render_hint: RENDER_HINT,
324
329
  type: 'gift_found',
330
+ agent: d.agent || null,
325
331
  advisor: advisorLabel,
326
332
  advisor_profile: d.advisor_profile || null,
327
333
  message: d.message || null,
@@ -346,6 +352,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
346
352
  if (d.status === 'clarification_needed') {
347
353
  return { content: [{ type: 'text', text: JSON.stringify({
348
354
  type: 'clarification_needed',
355
+ agent: d.agent || null,
349
356
  advisor: advisorLabel,
350
357
  advisor_profile: d.advisor_profile || null,
351
358
  message: d.message || '',
@@ -359,6 +366,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
359
366
  if (d.status === 'acknowledgement_legacy' || d.status === 'acknowledgement') {
360
367
  return { content: [{ type: 'text', text: JSON.stringify({
361
368
  type: d.status,
369
+ agent: d.agent || null,
362
370
  advisor: advisorLabel,
363
371
  advisor_profile: d.advisor_profile || null,
364
372
  message: d.message || '',
@@ -376,6 +384,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
376
384
  if (d.status === 'no_match') {
377
385
  content.push({ type: 'text', text: JSON.stringify({
378
386
  type: 'no_match',
387
+ agent: d.agent || null,
379
388
  advisor: advisorLabel,
380
389
  advisor_profile: d.advisor_profile || null,
381
390
  message: d.message || '',
@@ -389,6 +398,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
389
398
  content.push({ type: 'text', text: JSON.stringify({
390
399
  _render_hint: RENDER_HINT,
391
400
  type: d.status || 'product_found',
401
+ agent: d.agent || null,
392
402
  advisor: advisorLabel,
393
403
  advisor_profile: d.advisor_profile || null,
394
404
  picked: hasPick ? {
@@ -458,6 +468,13 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
458
468
  }
459
469
  return { content: [{ type: 'text', text: JSON.stringify({ _render_hint: RENDER_HINT, ...result }, null, 2) }] };
460
470
  }
471
+ case 'whoami': {
472
+ // Cheap lookup — backend `/api/agents/profile` resolves the agent
473
+ // from the API key and returns name + persona + style fields.
474
+ // No Anthropic call, no DB writes; ~50 ms typical.
475
+ const result = await apiCall('/api/agents/profile');
476
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
477
+ }
461
478
  case 'leave_review': {
462
479
  const lang = args?.language;
463
480
  if (lang !== 'de' && lang !== 'en') {
@@ -517,6 +534,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
517
534
  if (d.status === 'clarification_needed') {
518
535
  return { content: [{ type: 'text', text: JSON.stringify({
519
536
  type: 'clarification_needed',
537
+ agent: d.agent || null,
520
538
  advisor: d.advisor_profile?.name || d.agent?.personality || null,
521
539
  advisor_profile: d.advisor_profile || null,
522
540
  message: d.message || null,
@@ -531,6 +549,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
531
549
  return { content: [{ type: 'text', text: JSON.stringify({
532
550
  _render_hint: RENDER_HINT,
533
551
  type: 'gift_found',
552
+ agent: d.agent || null,
534
553
  advisor: d.advisor_profile?.name || d.agent?.personality || null,
535
554
  advisor_profile: d.advisor_profile || null,
536
555
  message: d.message || null,
@@ -547,6 +566,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
547
566
  return { content: [{ type: 'text', text: JSON.stringify({
548
567
  _render_hint: RENDER_HINT,
549
568
  type: d.status || 'no_match',
569
+ agent: d.agent || null,
550
570
  advisor: d.advisor_profile?.name || d.agent?.personality || null,
551
571
  advisor_profile: d.advisor_profile || null,
552
572
  message: d.message || null,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "byclaw-mcp",
3
- "version": "0.4.15",
3
+ "version": "0.4.16",
4
4
  "description": "MCP Server for byclaw.io — Your AI shopping advisor. Connects Claude Desktop and other MCP clients to the byclaw.io product catalog.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {