@edda-business/mcp 0.60.0 → 0.61.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/package.json +1 -1
  2. package/src/server.js +11 -9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edda-business/mcp",
3
- "version": "0.60.0",
3
+ "version": "0.61.0",
4
4
  "description": "Edda — the company data layer for AI agents.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
package/src/server.js CHANGED
@@ -27,7 +27,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
27
27
  import { z } from "zod";
28
28
  import { get, post, del } from "./client.js";
29
29
 
30
- export const SERVER_VERSION = "0.60.0";
30
+ export const SERVER_VERSION = "0.61.0";
31
31
 
32
32
  // ─── helpers ──────────────────────────────────────────────────────────────────
33
33
 
@@ -712,7 +712,7 @@ export function createServer() {
712
712
  name: z.string().describe("The page name, e.g. 'Refund Policy' or 'Q3 Planning — 2026-08-22'. A '.md' suffix is added if missing."),
713
713
  content: z.string().describe("The full markdown content of the page."),
714
714
  visibility: z.enum(["owner", "department", "company"]).optional().describe("Who can see the page: 'department' (the team it's filed in — default), 'company' (everyone), or 'owner' (just you)."),
715
- folder: z.string().optional().describe("Folder to file under, by NAME or path, e.g. 'Projects/Data Centre'. Created if it doesn't exist (needs a write role). Use this OR folder_id."),
715
+ folder: z.string().optional().describe("Folder to file under, by NAME or path. Top-level folders are fixed — a bare name becomes a project under Projects (e.g. 'Agency' → Projects/Agency); 'Top-Level/Sub' nests under a fixed folder. Created if missing (write role). Use this OR folder_id."),
716
716
  subfolder: z.string().optional().describe("Optional subfolder within `folder`, e.g. 'Specs'."),
717
717
  folder_id: z.string().optional().describe("Id of an existing company folder to file under (alternative to `folder`). Omit both to use the default 'wiki' folder."),
718
718
  },
@@ -744,12 +744,14 @@ export function createServer() {
744
744
  // ===========================================================================
745
745
  server.tool(
746
746
  "create_folder",
747
- "Create a folder (or a nested path) in the SHARED COMPANY knowledge tree so you can file pages into it. " +
748
- "Pass `path` as a name or slash-path, e.g. 'Projects/Data Centre' every missing level is created. A " +
749
- "folder directly under 'Projects' becomes a project (it gets a 'Shared with' control the Ambassador uses " +
750
- "to grant departments). A write role is required and the folder appears immediately. Then add pages with " +
751
- "propose_company_file / propose_company_files using the same `folder` path. Returns the folder id.",
752
- { path: z.string().describe("Folder name or path, e.g. 'Projects/Data Centre' or 'Playbooks'.") },
747
+ "Create a folder in the SHARED COMPANY knowledge tree so you can file pages into it. The TOP-LEVEL " +
748
+ "folders are FIXED (Company · Projects · Decisions · Companies · People · Raw Documents · Archive) — you " +
749
+ "cannot add new ones. A bare name (or a path that doesn't start with one of those) becomes a PROJECT under " +
750
+ "Projects: 'Agency' → Projects/Agency. To nest under a specific top-level folder, start the path with it, " +
751
+ "e.g. 'Company/Policies' or 'Projects/Data Centre/Specs'. A project gets a 'Shared with' control the " +
752
+ "Ambassador uses to grant departments. A write role is required; the folder appears immediately. Then add " +
753
+ "pages with propose_company_file / propose_company_files using the same path. Returns the folder id.",
754
+ { path: z.string().describe("Folder name or path. A bare name → a project under Projects; 'Top-Level/Sub' nests under a fixed top-level folder.") },
753
755
  async ({ path }) => {
754
756
  try {
755
757
  const r = await post("/v2/company/folders", { path });
@@ -775,7 +777,7 @@ export function createServer() {
775
777
  "a write role publishes them live; a viewer sends the whole batch to the company inbox. Name the target with " +
776
778
  "`folder` (a path, created if missing) + optional `subfolder`, or an existing `folder_id`. Max 50 pages.",
777
779
  {
778
- folder: z.string().optional().describe("Folder path to file all pages under, e.g. 'Projects/Data Centre'. Created if missing."),
780
+ folder: z.string().optional().describe("Folder to file all pages under. Top-level is fixed — a bare name becomes a project under Projects (e.g. 'Agency' → Projects/Agency); 'Top-Level/Sub' nests under a fixed folder. Created if missing."),
779
781
  subfolder: z.string().optional().describe("Optional subfolder within `folder`."),
780
782
  folder_id: z.string().optional().describe("Id of an existing folder (alternative to `folder`)."),
781
783
  visibility: z.enum(["owner", "department", "company"]).optional().describe("Default visibility for the pages (a page can override its own). Default 'department'."),