paperclip-mcp 1.2.0 → 1.2.2

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/errors.js CHANGED
@@ -3,7 +3,7 @@ export class PaperclipApiError extends Error {
3
3
  statusText;
4
4
  body;
5
5
  constructor(status, statusText, body, message) {
6
- super(message ?? `Paperclip API error ${status}: ${statusText}`);
6
+ super(message ?? `Paperclip API error ${status} ${statusText}: ${JSON.stringify(body)}`);
7
7
  this.status = status;
8
8
  this.statusText = statusText;
9
9
  this.body = body;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAExB;IACA;IACA;IAHlB,YACkB,MAAc,EACd,UAAkB,EAClB,IAAa,EAC7B,OAAgB;QAEhB,KAAK,CAAC,OAAO,IAAI,uBAAuB,MAAM,KAAK,UAAU,EAAE,CAAC,CAAC;QALjD,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAQ;QAClB,SAAI,GAAJ,IAAI,CAAS;QAI7B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAExB;IACA;IACA;IAHlB,YACkB,MAAc,EACd,UAAkB,EAClB,IAAa,EAC7B,OAAgB;QAEhB,KAAK,CAAC,OAAO,IAAI,uBAAuB,MAAM,IAAI,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QALzE,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAQ;QAClB,SAAI,GAAJ,IAAI,CAAS;QAI7B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/tools/identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,eAAO,MAAM,aAAa,EAAE,cAAc,EAyCzC,CAAC"}
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/tools/identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,eAAO,MAAM,aAAa,EAAE,cAAc,EA+DzC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { validate, NoInput, handleApiError } from "./validation.js";
2
+ import { PaperclipApiError } from "../errors.js";
2
3
  export const identityTools = [
3
4
  {
4
5
  name: "paperclip_get_me",
@@ -12,8 +13,19 @@ export const identityTools = [
12
13
  async handler(args, client) {
13
14
  try {
14
15
  validate(NoInput, args);
15
- const data = await client.get("/api/agents/me");
16
- return { content: [{ type: "text", text: JSON.stringify(data) }] };
16
+ try {
17
+ const data = await client.get("/api/agents/me");
18
+ return { content: [{ type: "text", text: JSON.stringify(data) }] };
19
+ }
20
+ catch (primaryErr) {
21
+ if (primaryErr instanceof PaperclipApiError && primaryErr.status === 401) {
22
+ // /api/agents/me requires a JWT with agent sub claim; fall back to the
23
+ // agent-scoped endpoint which works with any company-level API key.
24
+ const data = await client.get(`/api/agents/${client.agentId}`);
25
+ return { content: [{ type: "text", text: JSON.stringify(data) }] };
26
+ }
27
+ throw primaryErr;
28
+ }
17
29
  }
18
30
  catch (err) {
19
31
  return handleApiError(err);
@@ -32,8 +44,19 @@ export const identityTools = [
32
44
  async handler(args, client) {
33
45
  try {
34
46
  validate(NoInput, args);
35
- const data = await client.get("/api/agents/me/inbox-lite");
36
- return { content: [{ type: "text", text: JSON.stringify(data) }] };
47
+ try {
48
+ const data = await client.get("/api/agents/me/inbox-lite");
49
+ return { content: [{ type: "text", text: JSON.stringify(data) }] };
50
+ }
51
+ catch (primaryErr) {
52
+ if (primaryErr instanceof PaperclipApiError && primaryErr.status === 401) {
53
+ // /api/agents/me/inbox-lite requires a JWT with agent sub claim; fall back
54
+ // to filtering company issues by assignee, which works with any API key.
55
+ const data = await client.get(`/api/companies/${client.companyId}/issues?assigneeAgentId=${client.agentId}`);
56
+ return { content: [{ type: "text", text: JSON.stringify(data) }] };
57
+ }
58
+ throw primaryErr;
59
+ }
37
60
  }
38
61
  catch (err) {
39
62
  return handleApiError(err);
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/tools/identity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,uGAAuG;QACzG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;QACzD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;YACxB,IAAI,CAAC;gBACH,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACxB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAU,gBAAgB,CAAC,CAAC;gBACzD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACrE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,6IAA6I;QAC/I,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;QACzD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;YACxB,IAAI,CAAC;gBACH,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACxB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAU,2BAA2B,CAAC,CAAC;gBACpE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACrE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/tools/identity.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "paperclip-mcp",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "Paperclip MCP server for Claude Code agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",