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.
- package/index.js +33 -0
- 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
|
|