loopctl-mcp-server 2.42.0 → 2.43.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/index.js +33 -0
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -402,6 +402,17 @@ async function createProject({ name, slug, repo_url, description, tech_stack, mi
402
402
  return toContent(result);
403
403
  }
404
404
 
405
+ async function createKbScope({ name, slug, repo_url, description, tech_stack }) {
406
+ const body = { name, slug };
407
+ if (repo_url) body.repo_url = repo_url;
408
+ if (description) body.description = description;
409
+ if (tech_stack) body.tech_stack = tech_stack;
410
+ // Uses the AGENT key (not ORCH): a KB scope is agent-createable on the KB tier — that is
411
+ // the whole point. The server forces kind: :kb; a body-supplied kind is ignored.
412
+ const result = await apiCall("POST", "/api/v1/kb-scopes", body, process.env.LOOPCTL_AGENT_KEY);
413
+ return toContent(result);
414
+ }
415
+
405
416
  async function deleteProject({ project_id }) {
406
417
  const result = await apiCall(
407
418
  "DELETE",
@@ -2100,6 +2111,25 @@ const TOOLS = [
2100
2111
  required: ["name", "slug"],
2101
2112
  },
2102
2113
  },
2114
+ {
2115
+ name: "create_kb_scope",
2116
+ description:
2117
+ "Create a knowledge-only project scope (kind: kb) for the current tenant. Unlike create_project (work project, orchestrator+ / human-anchored), this is available to an agent-rooted (KB-tier) tenant with an agent key: a kb scope carries NO chain-of-custody / work-breakdown surface (it cannot host epics/stories/dispatch/ui-tests), it exists only to partition knowledge articles by repo so captured/created articles can be project-scoped. Then resolve_project by its repo_url/slug and pass the returned id as project_id on article/knowledge writes. Counts toward the tenant's max_projects budget.",
2118
+ inputSchema: {
2119
+ type: "object",
2120
+ properties: {
2121
+ name: { type: "string", description: "Scope name (often the repo name)." },
2122
+ slug: { type: "string", description: "URL-safe slug (often the repo basename)." },
2123
+ repo_url: {
2124
+ type: "string",
2125
+ description: "Repo URL, so resolve_project can map a repo to this scope.",
2126
+ },
2127
+ description: { type: "string", description: "Scope description." },
2128
+ tech_stack: { type: "string", description: "Tech stack summary." },
2129
+ },
2130
+ required: ["name", "slug"],
2131
+ },
2132
+ },
2103
2133
  {
2104
2134
  name: "delete_project",
2105
2135
  description:
@@ -4860,6 +4890,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
4860
4890
  case "create_project":
4861
4891
  return await createProject(args);
4862
4892
 
4893
+ case "create_kb_scope":
4894
+ return await createKbScope(args);
4895
+
4863
4896
  case "delete_project":
4864
4897
  return await deleteProject(args);
4865
4898
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "loopctl-mcp-server",
3
- "version": "2.42.0",
3
+ "version": "2.43.0",
4
4
  "description": "MCP server for loopctl — structural trust for AI development loops",
5
5
  "type": "module",
6
6
  "main": "index.js",