@glie/mcp-polaris 0.4.0 → 0.6.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.
Files changed (2) hide show
  1. package/dist/index.js +104 -18
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -220,17 +220,28 @@ var TOOLS = [
220
220
  },
221
221
  {
222
222
  name: "polaris.task.create",
223
- description: "Create a task within a milestone.",
224
- inputSchema: objSchema({ milestone_id: intSchema(), name: strSchema(), description_md: strSchema() }, ["milestone_id", "name"]),
223
+ description: "Create a task within a milestone. For a marketing CREATIVE (a task in an mkt campaign): channel + format + scheduled_date (the publish day / calendar slot) + platform (if this creative is individually paid).",
224
+ inputSchema: objSchema({
225
+ milestone_id: intSchema(),
226
+ name: strSchema(),
227
+ description_md: strSchema(),
228
+ status: strSchema("draft|backlog|dev|test|approval|release (default draft)"),
229
+ channel: strSchema("mkt: Instagram, TikTok, LinkedIn, \u2026"),
230
+ format: strSchema("mkt: post, reel, story, artigo, \u2026"),
231
+ scheduled_date: strSchema("mkt: publish day (ISO date) \u2014 the calendar slot"),
232
+ platform: strSchema("mkt: ad platform if this creative is individually paid"),
233
+ asset_url: strSchema("mkt: URL of the produced creative asset (image/video) for the reviewer")
234
+ }, ["milestone_id", "name"]),
225
235
  call: async (args) => (await apiCall("POST", "/api/tasks", args)).body
226
236
  },
227
237
  {
228
238
  name: "polaris.task.update",
229
- description: "Correct or refine a task's spec \u2014 PATCH its description_md (and optionally name). Use this to sharpen an underspecified brief so the implementing agent gets better results; it is NOT a log of what was done (leave that as a comment). Needs a token.",
239
+ description: "Correct or refine a task's spec \u2014 PATCH its description_md (and optionally name). For a marketing creative, set asset_url to the produced asset (image/video) so the reviewer can download and review it. It is NOT a log of what was done (leave that as a comment). Needs a token.",
230
240
  inputSchema: objSchema({
231
241
  id: intSchema(),
232
242
  name: strSchema(),
233
- description_md: strSchema("full markdown brief; replaces the current description")
243
+ description_md: strSchema("full markdown brief; replaces the current description"),
244
+ asset_url: strSchema("mkt: URL of the produced creative asset (image/video) for the reviewer")
234
245
  }, ["id"]),
235
246
  call: async (args) => {
236
247
  const body = {};
@@ -238,6 +249,8 @@ var TOOLS = [
238
249
  body.name = args.name;
239
250
  if (typeof args.description_md === "string")
240
251
  body.description_md = args.description_md;
252
+ if (typeof args.asset_url === "string")
253
+ body.asset_url = args.asset_url;
241
254
  return (await apiCall("PATCH", `/api/tasks/${args.id}`, body)).body;
242
255
  }
243
256
  },
@@ -339,12 +352,12 @@ var TOOLS = [
339
352
  },
340
353
  {
341
354
  name: "polaris.ticket.update",
342
- description: "Update a ticket's type, its human assignee, and/or its guidance (the communicator's orientation on what to do/say next).",
355
+ description: "Update a ticket's type, its human assignee, and/or its guidance (the helpdesker's orientation on what to do/say next).",
343
356
  inputSchema: objSchema({
344
357
  id: intSchema(),
345
358
  type: strSchema("bug|question|suggestion|feedback"),
346
359
  assignee_human_id: intSchema(),
347
- guidance: strSchema("The communicator's guidance on what to do/say next \u2014 orientation (e.g. create an issue, inform, reassure), researched from the customer's history + related issues. Shown to the human as advice; NOT inserted into the reply box.")
360
+ guidance: strSchema("The helpdesker's guidance on what to do/say next \u2014 orientation (e.g. create an issue, inform, reassure), researched from the customer's history + related issues. Shown to the human as advice; NOT inserted into the reply box.")
348
361
  }, ["id"]),
349
362
  call: async (args) => (await apiCall("PATCH", `/api/tickets/${args.id}`, {
350
363
  type: args.type,
@@ -377,20 +390,23 @@ var TOOLS = [
377
390
  },
378
391
  {
379
392
  name: "polaris.issue.open",
380
- description: "Open a STANDALONE issue (no ticket needed) \u2014 e.g. an internal dev files a bug. Scope with project_key.",
381
- inputSchema: objSchema({ project_key: strSchema(), title: strSchema() }, [
382
- "project_key",
383
- "title"
384
- ]),
393
+ description: "Open a STANDALONE issue (no ticket needed) \u2014 e.g. an internal dev files a bug. Scope with project_key. owner_human_id = the human accountable (defaults to you).",
394
+ inputSchema: objSchema({ project_key: strSchema(), title: strSchema(), owner_human_id: intSchema() }, ["project_key", "title"]),
385
395
  call: async (args) => (await apiCall("POST", "/api/issues", args)).body
386
396
  },
387
397
  {
388
398
  name: "polaris.issue.update",
389
- description: "Update an issue \u2014 set its title and/or assign it to an agent (assignee_agent_id, e.g. hand it to a planner).",
390
- inputSchema: objSchema({ id: intSchema(), title: strSchema(), assignee_agent_id: intSchema() }, ["id"]),
399
+ description: "Update an issue \u2014 set its title, assign it to an agent (assignee_agent_id, e.g. hand it to a planner), and/or set its owner (owner_human_id, the accountable human).",
400
+ inputSchema: objSchema({
401
+ id: intSchema(),
402
+ title: strSchema(),
403
+ assignee_agent_id: intSchema(),
404
+ owner_human_id: intSchema()
405
+ }, ["id"]),
391
406
  call: async (args) => (await apiCall("PATCH", `/api/issues/${args.id}`, {
392
407
  title: args.title,
393
- assignee_agent_id: args.assignee_agent_id
408
+ assignee_agent_id: args.assignee_agent_id,
409
+ owner_human_id: args.owner_human_id
394
410
  })).body
395
411
  },
396
412
  {
@@ -535,10 +551,10 @@ var TOOLS = [
535
551
  },
536
552
  {
537
553
  name: "polaris.agent.create",
538
- description: "Create an agent/employee (human-only). function: developer|tester|planner|communicator; product = project key; team = dev|mkt; domain optional (roadmap|helpdesk|both).",
554
+ description: "Create an agent/employee (human-only). function: developer|tester|planner|helpdesker; product = project key; team = dev|mkt; domain optional (roadmap|helpdesk|both).",
539
555
  inputSchema: objSchema({
540
556
  agent_id_slug: strSchema("stable slug, e.g. developer-polaris-01"),
541
- function: strSchema("developer|tester|planner|communicator"),
557
+ function: strSchema("developer|tester|planner|helpdesker"),
542
558
  product: strSchema("project key"),
543
559
  name: strSchema("friendly display name"),
544
560
  team: strSchema("dev|mkt"),
@@ -595,14 +611,41 @@ var TOOLS = [
595
611
  },
596
612
  {
597
613
  name: "polaris.milestone.create",
598
- description: "Create a milestone. team = dev|mkt; end_date = deadline (ISO date, required); framework_key optional.",
614
+ description: "Create a milestone. team=dev|mkt; end_date = deadline (ISO date, required). For a marketing CAMPAIGN (team=mkt) these extra fields carry the plan: market (BR/US/EU), cadence (per-channel rules Discovery expands into dated creatives), max_creatives (cap on that expansion), and paid + platforms + budget for a paid campaign.",
599
615
  inputSchema: objSchema({
600
616
  project_key: strSchema(),
601
617
  name: strSchema(),
602
618
  team: strSchema("dev|mkt"),
603
619
  end_date: strSchema("ISO date, e.g. 2026-06-30"),
620
+ start_date: strSchema("ISO date (optional)"),
604
621
  framework_key: strSchema(),
605
- description_md: strSchema()
622
+ description_md: strSchema(),
623
+ market: {
624
+ type: "array",
625
+ items: { type: "string" },
626
+ description: "mkt: target markets \u2014 any of BR, US, EU"
627
+ },
628
+ cadence: {
629
+ type: "array",
630
+ description: "mkt: per-channel cadence rules Discovery expands into dated creatives",
631
+ items: {
632
+ type: "object",
633
+ properties: {
634
+ channel: { type: "string", description: "Instagram, TikTok, LinkedIn, \u2026" },
635
+ format: { type: "string", description: "post, reel, story, artigo, \u2026" },
636
+ n: { type: "integer", description: "count per period" },
637
+ per: { type: "string", description: "day | week" }
638
+ }
639
+ }
640
+ },
641
+ max_creatives: intSchema("mkt: cap on how many creatives Discovery/cadence may generate"),
642
+ paid: { type: "boolean", description: "mkt: is the whole campaign paid?" },
643
+ platforms: {
644
+ type: "array",
645
+ items: { type: "string" },
646
+ description: "mkt paid: any of Meta, Google, Reddit, LinkedIn, TikTok, YouTube"
647
+ },
648
+ budget: { type: "number", description: "mkt: campaign ad-spend budget (\u20AC)" }
606
649
  }, ["project_key", "name", "team", "end_date"]),
607
650
  call: async (args) => (await apiCall("POST", "/api/milestones", args)).body
608
651
  },
@@ -666,6 +709,49 @@ var TOOLS = [
666
709
  description: "Revoke one of YOUR Personal Access Tokens. Idempotent.",
667
710
  inputSchema: objSchema({ token_id: intSchema() }, ["token_id"]),
668
711
  call: async (args) => (await apiCall("POST", `/api/humans/me/tokens/${args.token_id}/revoke`)).body
712
+ },
713
+ {
714
+ name: "polaris.human.me_update",
715
+ description: "Update YOUR human profile \u2014 link or clear your GitHub username (PATCH /api/humans/me). Pass empty string to clear.",
716
+ inputSchema: objSchema({ github_username: strSchema("GitHub username, or empty string to clear") }, ["github_username"]),
717
+ call: async (args) => (await apiCall("PATCH", "/api/humans/me", {
718
+ github_username: args.github_username || null
719
+ })).body
720
+ },
721
+ {
722
+ name: "polaris.team.create",
723
+ description: 'Create a team (human-only). requires = capability keys (e.g. ["repo"]); functions = agent functions it runs (developer|tester|planner|helpdesker).',
724
+ inputSchema: objSchema({
725
+ key: strSchema("team key, e.g. dev"),
726
+ name: strSchema(),
727
+ requires: {
728
+ type: "array",
729
+ items: { type: "string" },
730
+ description: 'capability keys, e.g. ["repo"]'
731
+ },
732
+ functions: {
733
+ type: "array",
734
+ items: { type: "string" },
735
+ description: "developer|tester|planner|helpdesker"
736
+ },
737
+ framework_key: strSchema()
738
+ }, ["key", "name"]),
739
+ call: async (args) => (await apiCall("POST", "/api/teams", args)).body
740
+ },
741
+ {
742
+ name: "polaris.team.update",
743
+ description: "Update a team (human-only): name, requires, functions, framework_key.",
744
+ inputSchema: objSchema({
745
+ key: strSchema("team key"),
746
+ name: strSchema(),
747
+ requires: { type: "array", items: { type: "string" } },
748
+ functions: { type: "array", items: { type: "string" } },
749
+ framework_key: strSchema()
750
+ }, ["key"]),
751
+ call: async (args) => {
752
+ const { key, ...patch } = args;
753
+ return (await apiCall("PATCH", `/api/teams/${key}`, patch)).body;
754
+ }
669
755
  }
670
756
  ];
671
757
  var TOOLS_BY_NAME = new Map(TOOLS.map((t) => [t.name, t]));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glie/mcp-polaris",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Model Context Protocol (stdio) server exposing Polaris — glie's ops platform — as native tools in Claude Code and any MCP client.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "glie <carlos@glie.ai>",