MCP Tool Catalog

Every WorkMemory MCP tool — name, description, inputSchema, scope, and example usage. Auto-generated from the canonical tool definitions; never edited by hand.

SDK reference: https://workweaver.ai/memory/docs/sdk

Streamable HTTP endpoint: POST https://workweaver.ai/memory/mcp · protocol 2025-06-18

READ: 34 · WRITE: 31 · SESSION: 3 · ADMIN: 7 · 75 tools

get_session_state

SESSION

Retrieve session metadata — status, segment count, agent/tool identity, timestamps. Use to check if a session exists and its current state before operating on it. [Extended tool — not a canonical verb: remember, observe, search, recall_context, forget]

Parameters

ParameterTypeRequiredDescription
session_idstringrequiredSession ID to look up.

inputSchema

{
  "properties": {
    "session_id": {
      "description": "Session ID to look up.",
      "type": "string"
    }
  },
  "required": [
    "session_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("get_session_state", session_id="<session_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("get_session_state", { session_id: "<session_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/get_session_state/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "session_id": "<session_id>"
  }
}'

memory_company_context

READ

Derive the org-scope CompanyContextView — a structured projection of organisational memory (decisions_made, preferences_observed, precedents_relied_on, skills_applied) built by walking the relation graph from the org/role entity node. Use once per session to pre-load org-level context instead of polling per-user profiles. Returns empty slots (never an error) for an empty or unknown org. [Extended tool — not a canonical verb: remember, observe, search, recall_context, forget]

Parameters

ParameterTypeRequiredDescription
max_hopsintegeroptionalMaximum graph hops to traverse (default 2). default: 2
org_entity_idstringoptionalOrg/role entity node to seed the walk from. Defaults to the tenant root node (ORG#<tenant_id>).
rolestringoptionalOptional role filter.

inputSchema

{
  "properties": {
    "max_hops": {
      "default": 2,
      "description": "Maximum graph hops to traverse (default 2).",
      "type": "integer"
    },
    "org_entity_id": {
      "description": "Org/role entity node to seed the walk from. Defaults to the tenant root node (ORG#<tenant_id>).",
      "type": "string"
    },
    "role": {
      "description": "Optional role filter.",
      "type": "string"
    }
  },
  "required": [],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("memory_company_context")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("memory_company_context");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/memory_company_context/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

memory_consolidate

WRITE

Trigger memory consolidation — merge duplicates, prune low-relevance items, and compact memory. Use after bulk ingestion or periodically to keep memory clean. Returns count of items merged, pruned, and total remaining. [Extended tool — not a canonical verb: remember, observe, search, recall_context, forget]

Parameters

ParameterTypeRequiredDescription
dry_runbooleanoptionalIf true, report what would change without modifying anything. default: false

inputSchema

{
  "properties": {
    "dry_run": {
      "default": false,
      "description": "If true, report what would change without modifying anything.",
      "type": "boolean"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("memory_consolidate")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("memory_consolidate");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/memory_consolidate/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

memory_cross_reference

READ

Find all entity relations for a given entity — outbound edges (what it relates to), inbound edges (what relates to it), with traversal depth 1. Use to explore the knowledge graph around any entity. [Extended tool — not a canonical verb: remember, observe, search, recall_context, forget]

Parameters

ParameterTypeRequiredDescription
entity_idstringrequiredThe entity ID to cross-reference (e.g. person name, project ID).
limitintegeroptionalMaximum relations per direction (default 50). default: 50

inputSchema

{
  "properties": {
    "entity_id": {
      "description": "The entity ID to cross-reference (e.g. person name, project ID).",
      "type": "string"
    },
    "limit": {
      "default": 50,
      "description": "Maximum relations per direction (default 50).",
      "type": "integer"
    }
  },
  "required": [
    "entity_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("memory_cross_reference", entity_id="<entity_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("memory_cross_reference", { entity_id: "<entity_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/memory_cross_reference/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "entity_id": "<entity_id>"
  }
}'

memory_forget

WRITE

Remove outdated or incorrect information from memory. Prefer target_type + target_id. Legacy memory_id/query inputs still work.

Parameters

ParameterTypeRequiredDescription
hard_deletebooleanoptionalWhen true, delete the record instead of tombstoning it.
memory_idstringoptionalLegacy item ID to forget (if known).
querystringoptionalLegacy query to find the best-matching item to forget.
reasonstringoptionalWhy this record should be forgotten.
target_idstringoptionalCanonical target identifier.
target_typestringoptionalCanonical target type: item, resource, or job.

inputSchema

{
  "properties": {
    "hard_delete": {
      "description": "When true, delete the record instead of tombstoning it.",
      "type": "boolean"
    },
    "memory_id": {
      "description": "Legacy item ID to forget (if known).",
      "type": "string"
    },
    "query": {
      "description": "Legacy query to find the best-matching item to forget.",
      "type": "string"
    },
    "reason": {
      "description": "Why this record should be forgotten.",
      "type": "string"
    },
    "target_id": {
      "description": "Canonical target identifier.",
      "type": "string"
    },
    "target_type": {
      "description": "Canonical target type: item, resource, or job.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("memory_forget")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("memory_forget");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/memory_forget/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

memory_profile

READ

Get pre-compiled user profile — static facts (long-term preferences, role, context) and dynamic context (recent activity, current state). Returns cached profile for fast context priming (<100ms on cache hit). Use for agent context priming at conversation start. [Extended tool — not a canonical verb: remember, observe, search, recall_context, forget]

Parameters

ParameterTypeRequiredDescription
user_idstringrequiredUser ID to get profile for (e.g. 'USER#alice').
include_search_resultsbooleanoptionalInclude semantic search results alongside profile facts. default: false
querystringoptionalOptional query for relevant search results alongside profile.

inputSchema

{
  "properties": {
    "include_search_results": {
      "default": false,
      "description": "Include semantic search results alongside profile facts.",
      "type": "boolean"
    },
    "query": {
      "description": "Optional query for relevant search results alongside profile.",
      "type": "string"
    },
    "user_id": {
      "description": "User ID to get profile for (e.g. 'USER#alice').",
      "type": "string"
    }
  },
  "required": [
    "user_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("memory_profile", user_id="<user_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("memory_profile", { user_id: "<user_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/memory_profile/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "user_id": "<user_id>"
  }
}'

memory_recall

READ

Find relevant context from memory. Ask naturally, like asking a colleague. Optionally set max_tokens for token-budgeted context.

Parameters

ParameterTypeRequiredDescription
querystringrequiredWhat you want to recall — ask naturally.
max_tokensintegeroptionalIf provided, returns token-budgeted formatted context. If omitted, returns raw search results.
memory_tierstringoptionalFilter by memory tier. Returns items from this tier plus parent tiers. E.g. 'task' returns task + mission + institutional. enum: institutional, mission, task, session
mission_idstringoptionalFilter memories to a specific mission (e.g. 'MISSION#abc').
tool_idstringoptionalFilter memories by tool identity. Returns memories created by this tool_id plus all universal-scope memories. Omit to return all memories.

inputSchema

{
  "properties": {
    "max_tokens": {
      "description": "If provided, returns token-budgeted formatted context. If omitted, returns raw search results.",
      "type": "integer"
    },
    "memory_tier": {
      "description": "Filter by memory tier. Returns items from this tier plus parent tiers. E.g. 'task' returns task + mission + institutional.",
      "enum": [
        "institutional",
        "mission",
        "task",
        "session"
      ],
      "type": "string"
    },
    "mission_id": {
      "description": "Filter memories to a specific mission (e.g. 'MISSION#abc').",
      "type": "string"
    },
    "query": {
      "description": "What you want to recall \u2014 ask naturally.",
      "type": "string"
    },
    "tool_id": {
      "description": "Filter memories by tool identity. Returns memories created by this tool_id plus all universal-scope memories. Omit to return all memories.",
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("memory_recall", query="<query>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("memory_recall", { query: "<query>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/memory_recall/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "query": "<query>"
  }
}'

memory_remember

WRITE

Save a fact, preference, decision, or observation to persistent memory. Be specific — one fact per call. Auto-categorizes, deduplicates, and redacts PII.

Parameters

ParameterTypeRequiredDescription
contentstringrequiredThe fact or observation to remember.
memory_tierstringoptionalMemory hierarchy tier: 'institutional' (permanent org-wide), 'mission' (project-scoped), 'task' (single task, default), 'session' (ephemeral). enum: institutional, mission, task, session
mission_idstringoptionalMission ID to scope this memory to (e.g. 'MISSION#abc').
tool_idstringoptionalIdentifies the tool saving this memory (e.g. 'claude-code', 'cursor', 'langchain'). Used for per-tool memory scoping.

inputSchema

{
  "properties": {
    "content": {
      "description": "The fact or observation to remember.",
      "type": "string"
    },
    "memory_tier": {
      "description": "Memory hierarchy tier: 'institutional' (permanent org-wide), 'mission' (project-scoped), 'task' (single task, default), 'session' (ephemeral).",
      "enum": [
        "institutional",
        "mission",
        "task",
        "session"
      ],
      "type": "string"
    },
    "mission_id": {
      "description": "Mission ID to scope this memory to (e.g. 'MISSION#abc').",
      "type": "string"
    },
    "tool_id": {
      "description": "Identifies the tool saving this memory (e.g. 'claude-code', 'cursor', 'langchain'). Used for per-tool memory scoping.",
      "type": "string"
    }
  },
  "required": [
    "content"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("memory_remember", content="<content>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("memory_remember", { content: "<content>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/memory_remember/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "content": "<content>"
  }
}'

memory_session

SESSION

Manage rolling context sessions for long conversations. Actions: start, flush, recall, pin, end. [Extended tool — not a canonical verb: remember, observe, search, recall_context, forget]

Parameters

ParameterTypeRequiredDescription
actionstringrequiredSession action to perform. enum: start, flush, recall, pin, end
agent_idstringoptionalAgent identifier (for start).
factstringoptionalFact to pin (for pin).
factsarrayoptionalExtracted facts from segment (for flush).
modelstringoptionalLLM model (for start).
querystringoptionalWhat to recall from this session (for recall).
session_idstringoptionalSession ID (required for flush/recall/pin/end).
summarystringoptionalCompressed summary of the segment (for flush).
token_countintegeroptionalToken count of original content (for flush).
topic_tagsarrayoptionalTopic tags for segment (for flush).

inputSchema

{
  "properties": {
    "action": {
      "description": "Session action to perform.",
      "enum": [
        "start",
        "flush",
        "recall",
        "pin",
        "end"
      ],
      "type": "string"
    },
    "agent_id": {
      "description": "Agent identifier (for start).",
      "type": "string"
    },
    "fact": {
      "description": "Fact to pin (for pin).",
      "type": "string"
    },
    "facts": {
      "description": "Extracted facts from segment (for flush).",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "model": {
      "description": "LLM model (for start).",
      "type": "string"
    },
    "query": {
      "description": "What to recall from this session (for recall).",
      "type": "string"
    },
    "session_id": {
      "description": "Session ID (required for flush/recall/pin/end).",
      "type": "string"
    },
    "summary": {
      "description": "Compressed summary of the segment (for flush).",
      "type": "string"
    },
    "token_count": {
      "description": "Token count of original content (for flush).",
      "type": "integer"
    },
    "topic_tags": {
      "description": "Topic tags for segment (for flush).",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "action"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("memory_session", action="start")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("memory_session", { action: "start" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/memory_session/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "action": "start"
  }
}'

memory_status

READ

Check WorkMemory health, connection status, storage usage, and memory count. Optionally inspect a specific handle's status when handle_id is provided. [Extended tool — not a canonical verb: remember, observe, search, recall_context, forget]

Parameters

ParameterTypeRequiredDescription
handle_idstringoptionalOptional job/resource/item handle to inspect.

inputSchema

{
  "properties": {
    "handle_id": {
      "description": "Optional job/resource/item handle to inspect.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("memory_status")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("memory_status");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/memory_status/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

memory_synthesize

WRITE

Synthesize a structured wiki-like artifact from memory items on a topic. Compiles scattered atomic facts into a persistent, section-structured document with source citations. Use for building knowledge bases, project briefs, or person profiles from existing memories. [Extended tool — not a canonical verb: remember, observe, search, recall_context, forget]

Parameters

ParameterTypeRequiredDescription
topicstringrequiredThe topic to synthesize a wiki page for.
artifact_typestringoptionalType of artifact to produce. Defaults to wiki_page. enum: wiki_page, topic_summary, project_brief, person_profile

inputSchema

{
  "properties": {
    "artifact_type": {
      "description": "Type of artifact to produce. Defaults to wiki_page.",
      "enum": [
        "wiki_page",
        "topic_summary",
        "project_brief",
        "person_profile"
      ],
      "type": "string"
    },
    "topic": {
      "description": "The topic to synthesize a wiki page for.",
      "type": "string"
    }
  },
  "required": [
    "topic"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("memory_synthesize", topic="<topic>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("memory_synthesize", { topic: "<topic>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/memory_synthesize/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "topic": "<topic>"
  }
}'

update_context

SESSION

Update team memory session context variables, summary, or current step.

Parameters

ParameterTypeRequiredDescription
session_idstringrequired
tenant_idstringrequired
context_varsobjectoptional
conversation_summarystringoptional
current_stepstringoptional

inputSchema

{
  "properties": {
    "context_vars": {
      "type": "object"
    },
    "conversation_summary": {
      "type": "string"
    },
    "current_step": {
      "type": "string"
    },
    "session_id": {
      "type": "string"
    },
    "tenant_id": {
      "type": "string"
    }
  },
  "required": [
    "tenant_id",
    "session_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("update_context", session_id="<session_id>", tenant_id="<tenant_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("update_context", { session_id: "<session_id>", tenant_id: "<tenant_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/update_context/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "session_id": "<session_id>",
    "tenant_id": "<tenant_id>"
  }
}'

workmemory_authority_review_list

READ

List graph nodes whose outcome-weight crossed the review threshold (|weight - 1.0| > 0.3) under the bounded divergence->authority feedback loop (#6509). Read side for operators: returns each pending-review node's ema_weight, observation_count, and last_adjusted_at so a drifting weight can be inspected (and reverted via the admin REST surface). Side-effect-free, admin-readable. Mirrors GET /v1/admin/memory/authority-weights/<tenant>?pending_only=true.

Parameters

ParameterTypeRequiredDescription
tenant_idstringoptionalTenant id (TENANT#<id>). Defaults to the authenticated MCP context.

inputSchema

{
  "properties": {
    "tenant_id": {
      "description": "Tenant id (TENANT#<id>). Defaults to the authenticated MCP context.",
      "type": "string"
    }
  },
  "required": [],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("workmemory_authority_review_list")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("workmemory_authority_review_list");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/workmemory_authority_review_list/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

workmemory_correct

WRITE

W13 user correction. Supersede an existing memory item with new content + rationale; writes a corrected_by relation edge and a decision-trace audit row. Mirrors POST /v1/memory/items/<id>/correct.

Parameters

ParameterTypeRequiredDescription
new_contentstringrequiredCorrected text for the new item.
old_item_idstringrequiredMemory item id to supersede.
rationalestringrequiredWhy the correction is being made (required).
actor_idstringoptionalActing principal id; defaults to 'system:mcp'. default: "system:mcp"

inputSchema

{
  "properties": {
    "actor_id": {
      "default": "system:mcp",
      "description": "Acting principal id; defaults to 'system:mcp'.",
      "type": "string"
    },
    "new_content": {
      "description": "Corrected text for the new item.",
      "type": "string"
    },
    "old_item_id": {
      "description": "Memory item id to supersede.",
      "type": "string"
    },
    "rationale": {
      "description": "Why the correction is being made (required).",
      "type": "string"
    }
  },
  "required": [
    "old_item_id",
    "new_content",
    "rationale"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("workmemory_correct", new_content="<new_content>", old_item_id="<old_item_id>", rationale="<rationale>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("workmemory_correct", { new_content: "<new_content>", old_item_id: "<old_item_id>", rationale: "<rationale>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/workmemory_correct/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "new_content": "<new_content>",
    "old_item_id": "<old_item_id>",
    "rationale": "<rationale>"
  }
}'

workmemory_forget

WRITE

W13 filter-based forget. Tombstones every fact matching subject_id, fact_id, actor_id, or scope under the caller's tenant; writes an audit row and a 30-day recovery snapshot. **dry_run defaults to true** -- set false to actually delete. Mirrors POST /v1/memory/forget.

Parameters

ParameterTypeRequiredDescription
actor_idstringoptionalFILTER dimension: forget every fact WRITTEN BY this actor. This is NOT the requesting actor; see requesting_actor_id.
dry_runbooleanoptionalPreview the affected items without writing. Defaults to true for safety. default: true
fact_idstringoptionalForget a single fact by id.
rationalestringoptionalAudit-only reason for the forget request.
requesting_actor_idstringoptionalPrincipal performing the forget (analog of REST x-actor-id header). Defaults to 'system:mcp'. default: "system:mcp"
scopestringoptionalForget facts in this memory scope.
subject_idstringoptionalForget every fact about this subject.

inputSchema

{
  "properties": {
    "actor_id": {
      "description": "FILTER dimension: forget every fact WRITTEN BY this actor. This is NOT the requesting actor; see requesting_actor_id.",
      "type": "string"
    },
    "dry_run": {
      "default": true,
      "description": "Preview the affected items without writing. Defaults to true for safety.",
      "type": "boolean"
    },
    "fact_id": {
      "description": "Forget a single fact by id.",
      "type": "string"
    },
    "rationale": {
      "description": "Audit-only reason for the forget request.",
      "type": "string"
    },
    "requesting_actor_id": {
      "default": "system:mcp",
      "description": "Principal performing the forget (analog of REST x-actor-id header). Defaults to 'system:mcp'.",
      "type": "string"
    },
    "scope": {
      "description": "Forget facts in this memory scope.",
      "type": "string"
    },
    "subject_id": {
      "description": "Forget every fact about this subject.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("workmemory_forget")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("workmemory_forget");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/workmemory_forget/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

workmemory_why_recalled

READ

W13 why-recalled lookup. Returns the persisted recall provenance (source_actor, source_event_id, source_policy_version) and a deterministic WhyRecalled synthesized from stored signals (pinned, important). Admin-readable, side-effect-free, no live recall. Mirrors GET /v1/memory/items/<id>/why-recalled.

Parameters

ParameterTypeRequiredDescription
item_idstringrequiredMemory item id whose lineage + recall trace to fetch.

inputSchema

{
  "properties": {
    "item_id": {
      "description": "Memory item id whose lineage + recall trace to fetch.",
      "type": "string"
    }
  },
  "required": [
    "item_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("workmemory_why_recalled", item_id="<item_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("workmemory_why_recalled", { item_id: "<item_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/workmemory_why_recalled/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "item_id": "<item_id>"
  }
}'

ww.admin.capacity_policy.effective

ADMIN

Resolve the policy a tenant should see right now after the per-tenant → global → constants fall-back chain (#5028).

Parameters

ParameterTypeRequiredDescription
tenant_idstringrequiredTenant id to resolve.

inputSchema

{
  "properties": {
    "tenant_id": {
      "description": "Tenant id to resolve.",
      "type": "string"
    }
  },
  "required": [
    "tenant_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.admin.capacity_policy.effective", tenant_id="<tenant_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.admin.capacity_policy.effective", { tenant_id: "<tenant_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.admin.capacity_policy.effective/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "tenant_id": "<tenant_id>"
  }
}'

ww.admin.capacity_policy.get

ADMIN

Read the global capacity policy (omit tenant_id) or a per-tenant override (provide tenant_id) (#5028).

Parameters

ParameterTypeRequiredDescription
tenant_idstringoptionalTenant id to read; omit to fetch the platform-wide default.

inputSchema

{
  "properties": {
    "tenant_id": {
      "description": "Tenant id to read; omit to fetch the platform-wide default.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.admin.capacity_policy.get")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.admin.capacity_policy.get");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.admin.capacity_policy.get/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.admin.capacity_policy.set

ADMIN

Upsert the global capacity policy (omit tenant_id) or a per-tenant override (provide tenant_id). Unspecified fields fall back to the current row so partial updates do not clobber unrelated dials (#5028).

Parameters

ParameterTypeRequiredDescription
actorstringoptionalOptional explicit MCP actor for audit attribution.
default_cost_degradation_policystringoptionalHow the scheduler reacts when a tenant exceeds the monthly cap. Default visibility_only — meter, surface, do not block. enum: visibility_only, soft_throttle, hard_block
default_ecs_autoscale_ceilingintegeroptionalECS service max task count.
default_max_agents_per_swarmintegeroptionalCap on agents within a single swarm.
default_max_concurrent_swarmsintegeroptionalPer-tenant cap on concurrent active swarms.
default_monthly_usd_capnumberoptionalMonthly USD cap surfaced in the metering ledger.
tenant_idstringoptionalTenant id whose policy to override; omit to write the platform-wide default.

inputSchema

{
  "properties": {
    "actor": {
      "description": "Optional explicit MCP actor for audit attribution.",
      "type": "string"
    },
    "default_cost_degradation_policy": {
      "description": "How the scheduler reacts when a tenant exceeds the monthly cap. Default visibility_only \u2014 meter, surface, do not block.",
      "enum": [
        "visibility_only",
        "soft_throttle",
        "hard_block"
      ],
      "type": "string"
    },
    "default_ecs_autoscale_ceiling": {
      "description": "ECS service max task count.",
      "maximum": 500,
      "minimum": 0,
      "type": "integer"
    },
    "default_max_agents_per_swarm": {
      "description": "Cap on agents within a single swarm.",
      "maximum": 128,
      "minimum": 1,
      "type": "integer"
    },
    "default_max_concurrent_swarms": {
      "description": "Per-tenant cap on concurrent active swarms.",
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    },
    "default_monthly_usd_cap": {
      "description": "Monthly USD cap surfaced in the metering ledger.",
      "minimum": 0,
      "type": "number"
    },
    "tenant_id": {
      "description": "Tenant id whose policy to override; omit to write the platform-wide default.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.admin.capacity_policy.set")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.admin.capacity_policy.set");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.admin.capacity_policy.set/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.admin.tenants.snapshot

ADMIN

Read one materialized TenantAdminSnapshot for founder/admin operations without fanning out across tenant tables (#5959).

Parameters

ParameterTypeRequiredDescription
tenant_idstringrequiredTenant id whose admin snapshot should be returned.

inputSchema

{
  "properties": {
    "tenant_id": {
      "description": "Tenant id whose admin snapshot should be returned.",
      "type": "string"
    }
  },
  "required": [
    "tenant_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.admin.tenants.snapshot", tenant_id="<tenant_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.admin.tenants.snapshot", { tenant_id: "<tenant_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.admin.tenants.snapshot/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "tenant_id": "<tenant_id>"
  }
}'

ww.agent.di

WRITE

Return an agent's Developmental Intelligence score and self-organization gate.

Parameters

ParameterTypeRequiredDescription
agent_idstringrequiredAgent ID to score.

inputSchema

{
  "properties": {
    "agent_id": {
      "description": "Agent ID to score.",
      "type": "string"
    }
  },
  "required": [
    "agent_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.agent.di", agent_id="<agent_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.agent.di", { agent_id: "<agent_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.agent.di/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "agent_id": "<agent_id>"
  }
}'

ww.benchmark.run

WRITE

Re-run WorkMemory's published internal-evaluation benchmark scoped to your own tenant data, metered against your usage (#6266). Returns the published vs reproduced memscore and the ±2pp delta. Reproduce our published number at your own usage cost — it consumes usage and is metered like any other action, not a standalone product. Stays Pending until the live panel has run.

Parameters

ParameterTypeRequiredDescription
modestringoptionalRepro profile: 'canonical' (full pinned datasets) or 'local' (baseline sample). Default 'canonical'. enum: canonical, local

inputSchema

{
  "properties": {
    "mode": {
      "description": "Repro profile: 'canonical' (full pinned datasets) or 'local' (baseline sample). Default 'canonical'.",
      "enum": [
        "canonical",
        "local"
      ],
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.benchmark.run")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.benchmark.run");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.benchmark.run/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.budget.admin_override

ADMIN

Admin-only: set the allow_overage flag on a tenant budget policy. Optionally extends the essential-surface allowlist (#4839).

Parameters

ParameterTypeRequiredDescription
tenant_idstringrequiredTenant id whose budget policy to override (TENANT#<id>).
allow_overagebooleanoptionalPermit non-essential surfaces past the ceiling.
custom_ceiling_usd_per_monthnumberoptionalOverride the default per-tenant ceiling (USD/mo).
essential_surfacesarrayoptionalExtend the essential-surface allowlist for this tenant.
notestringoptionalFree-text rationale for the override.

inputSchema

{
  "properties": {
    "allow_overage": {
      "description": "Permit non-essential surfaces past the ceiling.",
      "type": "boolean"
    },
    "custom_ceiling_usd_per_month": {
      "description": "Override the default per-tenant ceiling (USD/mo).",
      "type": "number"
    },
    "essential_surfaces": {
      "description": "Extend the essential-surface allowlist for this tenant.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "note": {
      "description": "Free-text rationale for the override.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Tenant id whose budget policy to override (TENANT#<id>).",
      "type": "string"
    }
  },
  "required": [
    "tenant_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.budget.admin_override", tenant_id="<tenant_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.budget.admin_override", { tenant_id: "<tenant_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.budget.admin_override/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "tenant_id": "<tenant_id>"
  }
}'

ww.budget.show

READ

Show the per-tenant AI budget summary: total spend, percentage of ceiling, per-surface breakdown, kill-switch state (#4839).

Parameters

ParameterTypeRequiredDescription
periodstringoptionalYYYY-MM period (default: current month UTC).
tenant_idstringoptionalTenant id (TENANT#<id>). Defaults to the authenticated MCP context.

inputSchema

{
  "properties": {
    "period": {
      "description": "YYYY-MM period (default: current month UTC).",
      "type": "string"
    },
    "tenant_id": {
      "description": "Tenant id (TENANT#<id>). Defaults to the authenticated MCP context.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.budget.show")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.budget.show");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.budget.show/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.connect.harness_install_session

WRITE

One-click harness install session. Mints a scoped WorkMemory API key, returns the harness-specific config snippet, and records install trust state. Same payload shape as ``POST /v1/workmemory/harness-install-session`` (#5022). Supports all 10 canonical harnesses (claude-desktop, claude-code, cursor, opencode, codex, gemini, openclaw, hermes, goose, generic-mcp). Plaintext key is returned exactly ONCE — clients must persist it themselves. ADMIN-scoped.

Parameters

ParameterTypeRequiredDescription
harnessstringrequiredPublic kebab-case harness name. enum: claude-desktop, claude-code, cursor, opencode, codex, gemini, openclaw, hermes, goose, generic-mcp
base_urlstringoptionalOptional canonical public base URL the snippet embeds. Defaults to WORKMEMORY_PUBLIC_BASE_URL or https://api.workweaver.ai.
namestringoptionalDisplay name for the issued scoped API key. default: "harness-install"
scopesarrayoptionalScopes to mint on the issued API key. Allowed: READ, WRITE. ADMIN/SESSION are rejected (defence in depth — see #5022 codex review).
task_scopestringoptionalOptional per-task persistent-context key (#6275). Pins the harness to a super-app task tab so recall + capture are task-coherent. Omitted ⇒ tenant-wide.
tenant_idstringoptionalTenant id. Defaults to the authenticated MCP context; cross-tenant param values are rejected.

inputSchema

{
  "properties": {
    "base_url": {
      "description": "Optional canonical public base URL the snippet embeds. Defaults to WORKMEMORY_PUBLIC_BASE_URL or https://api.workweaver.ai.",
      "type": "string"
    },
    "harness": {
      "description": "Public kebab-case harness name.",
      "enum": [
        "claude-desktop",
        "claude-code",
        "cursor",
        "opencode",
        "codex",
        "gemini",
        "openclaw",
        "hermes",
        "goose",
        "generic-mcp"
      ],
      "type": "string"
    },
    "name": {
      "default": "harness-install",
      "description": "Display name for the issued scoped API key.",
      "type": "string"
    },
    "scopes": {
      "description": "Scopes to mint on the issued API key. Allowed: READ, WRITE. ADMIN/SESSION are rejected (defence in depth \u2014 see #5022 codex review).",
      "items": {
        "enum": [
          "READ",
          "WRITE"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "task_scope": {
      "description": "Optional per-task persistent-context key (#6275). Pins the harness to a super-app task tab so recall + capture are task-coherent. Omitted \u21d2 tenant-wide.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Tenant id. Defaults to the authenticated MCP context; cross-tenant param values are rejected.",
      "type": "string"
    }
  },
  "required": [
    "harness"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.connect.harness_install_session", harness="claude-desktop")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.connect.harness_install_session", { harness: "claude-desktop" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.connect.harness_install_session/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "harness": "claude-desktop"
  }
}'

ww.evidence_disputes.get

READ

Fetch a single EvidenceDispute row by dispute_id (#5091).

Parameters

ParameterTypeRequiredDescription
dispute_idstringrequiredDispute id (``disp_<hex>``).
tenant_idstringoptionalTenant id. Defaults to the authenticated MCP context.

inputSchema

{
  "properties": {
    "dispute_id": {
      "description": "Dispute id (``disp_<hex>``).",
      "type": "string"
    },
    "tenant_id": {
      "description": "Tenant id. Defaults to the authenticated MCP context.",
      "type": "string"
    }
  },
  "required": [
    "dispute_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.evidence_disputes.get", dispute_id="<dispute_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.evidence_disputes.get", { dispute_id: "<dispute_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.evidence_disputes.get/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "dispute_id": "<dispute_id>"
  }
}'

ww.evidence_disputes.list

READ

List EvidenceDispute rows for a tenant, optionally filtered by status (pending_review | resolved_accepted | resolved_rejected | escalated) (#5091).

Parameters

ParameterTypeRequiredDescription
statusstringoptionalOptional status filter. enum: pending_review, resolved_accepted, resolved_rejected, escalated
tenant_idstringoptionalTenant id. Defaults to the authenticated MCP context; cross-tenant param values are rejected.

inputSchema

{
  "properties": {
    "status": {
      "description": "Optional status filter.",
      "enum": [
        "pending_review",
        "resolved_accepted",
        "resolved_rejected",
        "escalated"
      ],
      "type": "string"
    },
    "tenant_id": {
      "description": "Tenant id. Defaults to the authenticated MCP context; cross-tenant param values are rejected.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.evidence_disputes.list")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.evidence_disputes.list");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.evidence_disputes.list/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.evidence_disputes.update_status

ADMIN

Transition a dispute from pending_review (or escalated) to a resolved_* terminal state, or escalate a pending dispute. Terminal states are terminal; illegal transitions return an ``illegal_transition`` error envelope (#5091).

Parameters

ParameterTypeRequiredDescription
actor_idstringrequiredReviewer id; recorded on the row as ``reviewed_by``.
dispute_idstringrequiredDispute id (``disp_<hex>``).
statusstringrequiredTarget lifecycle status. enum: pending_review, resolved_accepted, resolved_rejected, escalated
tenant_idstringoptionalTenant id. Defaults to the authenticated MCP context.

inputSchema

{
  "properties": {
    "actor_id": {
      "description": "Reviewer id; recorded on the row as ``reviewed_by``.",
      "type": "string"
    },
    "dispute_id": {
      "description": "Dispute id (``disp_<hex>``).",
      "type": "string"
    },
    "status": {
      "description": "Target lifecycle status.",
      "enum": [
        "pending_review",
        "resolved_accepted",
        "resolved_rejected",
        "escalated"
      ],
      "type": "string"
    },
    "tenant_id": {
      "description": "Tenant id. Defaults to the authenticated MCP context.",
      "type": "string"
    }
  },
  "required": [
    "dispute_id",
    "status",
    "actor_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.evidence_disputes.update_status", actor_id="<actor_id>", dispute_id="<dispute_id>", status="pending_review")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.evidence_disputes.update_status", { actor_id: "<actor_id>", dispute_id: "<dispute_id>", status: "pending_review" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.evidence_disputes.update_status/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "actor_id": "<actor_id>",
    "dispute_id": "<dispute_id>",
    "status": "pending_review"
  }
}'

ww.fs.cat

READ

Read a WorkMemoryFS virtual file (#5012).

Parameters

ParameterTypeRequiredDescription
pathstringrequired
tool_idstringoptionalOptional requester tool id for tool-scoped memory visibility.

inputSchema

{
  "properties": {
    "path": {
      "type": "string"
    },
    "tool_id": {
      "description": "Optional requester tool id for tool-scoped memory visibility.",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.fs.cat", path="<path>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.fs.cat", { path: "<path>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.fs.cat/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "path": "<path>"
  }
}'

ww.fs.echo

WRITE

Append content to WorkMemoryFS /inbox/ through the canonical ingestion path (#5012).

Parameters

ParameterTypeRequiredDescription
contentstringrequired
pathstringrequired

inputSchema

{
  "properties": {
    "content": {
      "type": "string"
    },
    "path": {
      "type": "string"
    }
  },
  "required": [
    "path",
    "content"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.fs.echo", content="<content>", path="<path>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.fs.echo", { content: "<content>", path: "<path>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.fs.echo/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "content": "<content>",
    "path": "<path>"
  }
}'

ww.fs.find

READ

Find WorkMemoryFS virtual entries by name (#5012).

Parameters

ParameterTypeRequiredDescription
namestringoptional default: "*"
pathstringoptional default: "/"
tool_idstringoptionalOptional requester tool id for tool-scoped memory visibility.

inputSchema

{
  "properties": {
    "name": {
      "default": "*",
      "type": "string"
    },
    "path": {
      "default": "/",
      "type": "string"
    },
    "tool_id": {
      "description": "Optional requester tool id for tool-scoped memory visibility.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.fs.find")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.fs.find");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.fs.find/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.fs.grep

READ

Search WorkMemoryFS content (#5012).

Parameters

ParameterTypeRequiredDescription
patternstringrequired
lexicalbooleanoptional default: false
limitintegeroptional default: 20
pathstringoptional default: "/"
tool_idstringoptionalOptional requester tool id for tool-scoped memory visibility.

inputSchema

{
  "properties": {
    "lexical": {
      "default": false,
      "type": "boolean"
    },
    "limit": {
      "default": 20,
      "type": "integer"
    },
    "path": {
      "default": "/",
      "type": "string"
    },
    "pattern": {
      "type": "string"
    },
    "tool_id": {
      "description": "Optional requester tool id for tool-scoped memory visibility.",
      "type": "string"
    }
  },
  "required": [
    "pattern"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.fs.grep", pattern="<pattern>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.fs.grep", { pattern: "<pattern>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.fs.grep/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "pattern": "<pattern>"
  }
}'

ww.fs.ls

READ

List a WorkMemoryFS virtual directory (#5012).

Parameters

ParameterTypeRequiredDescription
pathstringoptionalVirtual directory path. default: "/"
tool_idstringoptionalOptional requester tool id for tool-scoped memory visibility.

inputSchema

{
  "properties": {
    "path": {
      "default": "/",
      "description": "Virtual directory path.",
      "type": "string"
    },
    "tool_id": {
      "description": "Optional requester tool id for tool-scoped memory visibility.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.fs.ls")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.fs.ls");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.fs.ls/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.fs.rm

WRITE

Soft-delete a WorkMemoryFS entity through the canonical forget path (#5012).

Parameters

ParameterTypeRequiredDescription
pathstringrequired

inputSchema

{
  "properties": {
    "path": {
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.fs.rm", path="<path>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.fs.rm", { path: "<path>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.fs.rm/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "path": "<path>"
  }
}'

ww.function.archive

WRITE

Archive a Work Function through the REST route. Emits Decision Trace action work_function.archive.

Parameters

ParameterTypeRequiredDescription
function_idstringrequiredWork Function id.
actor_idstringoptionalActing principal id for Decision Trace emission. default: "mcp"
drainstringoptionalIn-flight work drain policy. enum: drain_to_completion, drain_in_flight, cancel_with_trace, cancel_in_flight, reassign, reject_if_running default: "drain_to_completion"
reasonstringoptionalDecision Trace reason. default: "Archived from MCP"
tenant_idstringoptionalOptional workspace id. Must match the authenticated MCP workspace context when provided.

inputSchema

{
  "properties": {
    "actor_id": {
      "default": "mcp",
      "description": "Acting principal id for Decision Trace emission.",
      "type": "string"
    },
    "drain": {
      "default": "drain_to_completion",
      "description": "In-flight work drain policy.",
      "enum": [
        "drain_to_completion",
        "drain_in_flight",
        "cancel_with_trace",
        "cancel_in_flight",
        "reassign",
        "reject_if_running"
      ],
      "type": "string"
    },
    "function_id": {
      "description": "Work Function id.",
      "type": "string"
    },
    "reason": {
      "default": "Archived from MCP",
      "description": "Decision Trace reason.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Optional workspace id. Must match the authenticated MCP workspace context when provided.",
      "type": "string"
    }
  },
  "required": [
    "function_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.function.archive", function_id="<function_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.function.archive", { function_id: "<function_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.function.archive/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "function_id": "<function_id>"
  }
}'

ww.function.capacity.set

WRITE

Set Work Function capacity through the REST update route. Emits Decision Trace action work_function.update.

Parameters

ParameterTypeRequiredDescription
function_idstringrequiredWork Function id.
max_cloud_workersintegerrequiredMaximum concurrent Work Function workers; maps to REST capacity max_concurrent. default: 5
actor_idstringoptionalActing principal id for Decision Trace emission. default: "mcp"
always_on_quotaintegeroptionalAlways-on worker quota. default: 0
budget_usdnumberoptionalBudget ceiling in USD. default: 100.0
foreground_reservationsintegeroptionalForeground worker reservations. default: 0
reasonstringoptionalDecision Trace reason. default: "Updated capacity from MCP"
tenant_idstringoptionalOptional workspace id. Must match the authenticated MCP workspace context when provided.
zero_burn_target_usdstringoptionalZero-burn target in USD. default: "0"

inputSchema

{
  "properties": {
    "actor_id": {
      "default": "mcp",
      "description": "Acting principal id for Decision Trace emission.",
      "type": "string"
    },
    "always_on_quota": {
      "default": 0,
      "description": "Always-on worker quota.",
      "type": "integer"
    },
    "budget_usd": {
      "default": 100.0,
      "description": "Budget ceiling in USD.",
      "type": "number"
    },
    "foreground_reservations": {
      "default": 0,
      "description": "Foreground worker reservations.",
      "type": "integer"
    },
    "function_id": {
      "description": "Work Function id.",
      "type": "string"
    },
    "max_cloud_workers": {
      "default": 5,
      "description": "Maximum concurrent Work Function workers; maps to REST capacity max_concurrent.",
      "type": "integer"
    },
    "reason": {
      "default": "Updated capacity from MCP",
      "description": "Decision Trace reason.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Optional workspace id. Must match the authenticated MCP workspace context when provided.",
      "type": "string"
    },
    "zero_burn_target_usd": {
      "default": "0",
      "description": "Zero-burn target in USD.",
      "type": "string"
    }
  },
  "required": [
    "function_id",
    "max_cloud_workers"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.function.capacity.set", function_id="<function_id>", max_cloud_workers=0)
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.function.capacity.set", { function_id: "<function_id>", max_cloud_workers: 0 });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.function.capacity.set/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "function_id": "<function_id>",
    "max_cloud_workers": 0
  }
}'

ww.function.create

WRITE

Create a Work Function through the REST lifecycle route. Emits Decision Trace action work_function.create.

Parameters

ParameterTypeRequiredDescription
namestringrequiredWork Function display name.
actor_idstringoptionalActing principal id for Decision Trace emission. default: "mcp"
always_on_quotaintegeroptionalAlways-on worker quota. default: 0
autonomy_levelintegeroptionalAutonomy level, 0-5. default: 2
budget_usdnumberoptionalBudget ceiling in USD. default: 100.0
connector_scopesarrayoptionalAllowed connector scopes.
coordination_protocolstringoptionalCoordination protocol. default: "auto"
foreground_reservationsintegeroptionalForeground worker reservations. default: 0
initial_statestringoptionalInitial lifecycle state. enum: dormant, active default: "active"
localitystringoptionalLocal/cloud locality preference. enum: prefer_local, prefer_cloud, local_only, cloud_only, cloud_required default: "prefer_local"
max_cloud_workersintegeroptionalMaximum concurrent Work Function workers; maps to REST capacity max_concurrent. default: 5
presetstringoptionalPreset id, e.g. marketing.
preset_idstringoptionalPreset id alias.
purposestringoptionalPurpose summary.
resource_policy_idstringoptionalResource Policy id.
tenant_idstringoptionalOptional workspace id. Must match the authenticated MCP workspace context when provided.
zero_burn_target_usdstringoptionalZero-burn target in USD. default: "0"

inputSchema

{
  "properties": {
    "actor_id": {
      "default": "mcp",
      "description": "Acting principal id for Decision Trace emission.",
      "type": "string"
    },
    "always_on_quota": {
      "default": 0,
      "description": "Always-on worker quota.",
      "type": "integer"
    },
    "autonomy_level": {
      "default": 2,
      "description": "Autonomy level, 0-5.",
      "type": "integer"
    },
    "budget_usd": {
      "default": 100.0,
      "description": "Budget ceiling in USD.",
      "type": "number"
    },
    "connector_scopes": {
      "description": "Allowed connector scopes.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "coordination_protocol": {
      "default": "auto",
      "description": "Coordination protocol.",
      "type": "string"
    },
    "foreground_reservations": {
      "default": 0,
      "description": "Foreground worker reservations.",
      "type": "integer"
    },
    "initial_state": {
      "default": "active",
      "description": "Initial lifecycle state.",
      "enum": [
        "dormant",
        "active"
      ],
      "type": "string"
    },
    "locality": {
      "default": "prefer_local",
      "description": "Local/cloud locality preference.",
      "enum": [
        "prefer_local",
        "prefer_cloud",
        "local_only",
        "cloud_only",
        "cloud_required"
      ],
      "type": "string"
    },
    "max_cloud_workers": {
      "default": 5,
      "description": "Maximum concurrent Work Function workers; maps to REST capacity max_concurrent.",
      "type": "integer"
    },
    "name": {
      "description": "Work Function display name.",
      "type": "string"
    },
    "preset": {
      "description": "Preset id, e.g. marketing.",
      "type": "string"
    },
    "preset_id": {
      "description": "Preset id alias.",
      "type": "string"
    },
    "purpose": {
      "description": "Purpose summary.",
      "type": "string"
    },
    "resource_policy_id": {
      "description": "Resource Policy id.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Optional workspace id. Must match the authenticated MCP workspace context when provided.",
      "type": "string"
    },
    "zero_burn_target_usd": {
      "default": "0",
      "description": "Zero-burn target in USD.",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.function.create", name="<name>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.function.create", { name: "<name>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.function.create/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "name": "<name>"
  }
}'

ww.function.delete

WRITE

Tombstone a Work Function and return deletion proof. Emits Decision Trace action work_function.delete.

Parameters

ParameterTypeRequiredDescription
confirmbooleanrequiredMust be true to perform deletion. default: false
function_idstringrequiredWork Function id.
actor_idstringoptionalActing principal id for Decision Trace emission. default: "mcp"
evidence_retention_daysintegeroptionalEvidence retention window. default: 365
reasonstringoptionalDecision Trace reason. default: "Deleted from MCP"
tenant_idstringoptionalOptional workspace id. Must match the authenticated MCP workspace context when provided.

inputSchema

{
  "properties": {
    "actor_id": {
      "default": "mcp",
      "description": "Acting principal id for Decision Trace emission.",
      "type": "string"
    },
    "confirm": {
      "default": false,
      "description": "Must be true to perform deletion.",
      "type": "boolean"
    },
    "evidence_retention_days": {
      "default": 365,
      "description": "Evidence retention window.",
      "type": "integer"
    },
    "function_id": {
      "description": "Work Function id.",
      "type": "string"
    },
    "reason": {
      "default": "Deleted from MCP",
      "description": "Decision Trace reason.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Optional workspace id. Must match the authenticated MCP workspace context when provided.",
      "type": "string"
    }
  },
  "required": [
    "function_id",
    "confirm"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.function.delete", confirm=true, function_id="<function_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.function.delete", { confirm: true, function_id: "<function_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.function.delete/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "confirm": true,
    "function_id": "<function_id>"
  }
}'

ww.function.downgrade_preview

READ

Preview a tier downgrade through the REST route. Emits Decision Trace action work_function.downgrade_preview.

Parameters

ParameterTypeRequiredDescription
function_idstringrequiredWork Function id.
to_tierstringrequiredTarget tier id.
active_connectorsarrayoptionalActive connectors.
actor_idstringoptionalActing principal id for Decision Trace emission. default: "mcp"
from_tierstringoptionalCurrent tier id. default: "current"
tenant_idstringoptionalOptional workspace id. Must match the authenticated MCP workspace context when provided.
tier_connectorsarrayoptionalAllowed connectors.
tier_limitsobjectoptionalTarget tier numeric limits.

inputSchema

{
  "properties": {
    "active_connectors": {
      "description": "Active connectors.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "actor_id": {
      "default": "mcp",
      "description": "Acting principal id for Decision Trace emission.",
      "type": "string"
    },
    "from_tier": {
      "default": "current",
      "description": "Current tier id.",
      "type": "string"
    },
    "function_id": {
      "description": "Work Function id.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Optional workspace id. Must match the authenticated MCP workspace context when provided.",
      "type": "string"
    },
    "tier_connectors": {
      "description": "Allowed connectors.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "tier_limits": {
      "description": "Target tier numeric limits.",
      "type": "object"
    },
    "to_tier": {
      "description": "Target tier id.",
      "type": "string"
    }
  },
  "required": [
    "function_id",
    "to_tier"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.function.downgrade_preview", function_id="<function_id>", to_tier="<to_tier>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.function.downgrade_preview", { function_id: "<function_id>", to_tier: "<to_tier>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.function.downgrade_preview/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "function_id": "<function_id>",
    "to_tier": "<to_tier>"
  }
}'

ww.function.list

READ

List workspace-scoped Work Functions. Emits Decision Trace action work_function.list.

Parameters

ParameterTypeRequiredDescription
tenant_idstringoptionalOptional workspace id. Must match the authenticated MCP workspace context when provided.

inputSchema

{
  "properties": {
    "tenant_id": {
      "description": "Optional workspace id. Must match the authenticated MCP workspace context when provided.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.function.list")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.function.list");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.function.list/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.function.presets.list

READ

List canonical Work Function presets. Emits Decision Trace action work_function.presets.

Parameters

ParameterTypeRequiredDescription
tenant_idstringoptionalOptional workspace id. Must match the authenticated MCP workspace context when provided.

inputSchema

{
  "properties": {
    "tenant_id": {
      "description": "Optional workspace id. Must match the authenticated MCP workspace context when provided.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.function.presets.list")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.function.presets.list");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.function.presets.list/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.function.quota.check

WRITE

Read Work Function WORM quota through the REST route. Emits Decision Trace action work_function.quota.check.

Parameters

ParameterTypeRequiredDescription
function_idstringrequiredWork Function id.
tenant_idstringoptionalOptional workspace id. Must match the authenticated MCP workspace context when provided.

inputSchema

{
  "properties": {
    "function_id": {
      "description": "Work Function id.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Optional workspace id. Must match the authenticated MCP workspace context when provided.",
      "type": "string"
    }
  },
  "required": [
    "function_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.function.quota.check", function_id="<function_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.function.quota.check", { function_id: "<function_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.function.quota.check/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "function_id": "<function_id>"
  }
}'

ww.function.quota.set

WRITE

Set Work Function WORM quota policy through the REST route. Emits Decision Trace action work_function.quota.policy.changed, or work_function.quota.policy.denied on quota conflicts.

Parameters

ParameterTypeRequiredDescription
function_idstringrequiredWork Function id.
actor_idstringoptionalActing principal id for Decision Trace emission. default: "mcp"
artifact_retention_classstringoptionalArtifact retention class. enum: hot, warm, cold, archive default: "hot"
cold_tier_after_daysintegeroptionalDays before artifacts become cold-tier eligible.
reasonstringoptionalDecision Trace reason. default: "Updated Work Function WORM quota policy"
storage_quota_gbstring | numberoptionalWORM storage quota in GiB.
tenant_idstringoptionalOptional workspace id. Must match the authenticated MCP workspace context when provided.
workmemory_index_quota_mbstring | numberoptionalWorkMemory index quota in MiB.

inputSchema

{
  "properties": {
    "actor_id": {
      "default": "mcp",
      "description": "Acting principal id for Decision Trace emission.",
      "type": "string"
    },
    "artifact_retention_class": {
      "default": "hot",
      "description": "Artifact retention class.",
      "enum": [
        "hot",
        "warm",
        "cold",
        "archive"
      ],
      "type": "string"
    },
    "cold_tier_after_days": {
      "description": "Days before artifacts become cold-tier eligible.",
      "type": "integer"
    },
    "function_id": {
      "description": "Work Function id.",
      "type": "string"
    },
    "reason": {
      "default": "Updated Work Function WORM quota policy",
      "description": "Decision Trace reason.",
      "type": "string"
    },
    "storage_quota_gb": {
      "description": "WORM storage quota in GiB.",
      "type": [
        "string",
        "number"
      ]
    },
    "tenant_id": {
      "description": "Optional workspace id. Must match the authenticated MCP workspace context when provided.",
      "type": "string"
    },
    "workmemory_index_quota_mb": {
      "description": "WorkMemory index quota in MiB.",
      "type": [
        "string",
        "number"
      ]
    }
  },
  "required": [
    "function_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.function.quota.set", function_id="<function_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.function.quota.set", { function_id: "<function_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.function.quota.set/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "function_id": "<function_id>"
  }
}'

ww.function.reactivate

WRITE

Reactivate an archived Work Function. Emits Decision Trace action work_function.reactivate.

Parameters

ParameterTypeRequiredDescription
function_idstringrequiredWork Function id.
actor_idstringoptionalActing principal id for Decision Trace emission. default: "mcp"
reasonstringoptionalDecision Trace reason. default: "Reactivated from MCP"
tenant_idstringoptionalOptional workspace id. Must match the authenticated MCP workspace context when provided.

inputSchema

{
  "properties": {
    "actor_id": {
      "default": "mcp",
      "description": "Acting principal id for Decision Trace emission.",
      "type": "string"
    },
    "function_id": {
      "description": "Work Function id.",
      "type": "string"
    },
    "reason": {
      "default": "Reactivated from MCP",
      "description": "Decision Trace reason.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Optional workspace id. Must match the authenticated MCP workspace context when provided.",
      "type": "string"
    }
  },
  "required": [
    "function_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.function.reactivate", function_id="<function_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.function.reactivate", { function_id: "<function_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.function.reactivate/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "function_id": "<function_id>"
  }
}'

ww.function.show

READ

Show one Work Function through the REST route. Emits Decision Trace action work_function.show.

Parameters

ParameterTypeRequiredDescription
function_idstringrequiredWork Function id.
tenant_idstringoptionalOptional workspace id. Must match the authenticated MCP workspace context when provided.

inputSchema

{
  "properties": {
    "function_id": {
      "description": "Work Function id.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Optional workspace id. Must match the authenticated MCP workspace context when provided.",
      "type": "string"
    }
  },
  "required": [
    "function_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.function.show", function_id="<function_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.function.show", { function_id: "<function_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.function.show/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "function_id": "<function_id>"
  }
}'

ww.orchestrate.fanout

WRITE

Fan a goal out to multiple external ACP harnesses (Codex, Claude Code, Cursor) in parallel, capture every run into WorkMemory with provenance, and return a merged/best result.

Parameters

ParameterTypeRequiredDescription
goalstringrequiredFree-text goal handed to every harness.
harnessesarrayrequiredHarnesses to fan out to, e.g. ['codex','claude_code','cursor']. Deduplicated; unknown harness names are rejected.
budgetobjectoptionalOptional budget envelope forwarded to each leg.
strategystringoptionalAggregation strategy: best_of (first successful leg), merge (concatenate surviving legs), or all (return every leg with no single selection). enum: best_of, merge, all default: "best_of"

inputSchema

{
  "properties": {
    "budget": {
      "description": "Optional budget envelope forwarded to each leg.",
      "type": "object"
    },
    "goal": {
      "description": "Free-text goal handed to every harness.",
      "type": "string"
    },
    "harnesses": {
      "description": "Harnesses to fan out to, e.g. ['codex','claude_code','cursor']. Deduplicated; unknown harness names are rejected.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "strategy": {
      "default": "best_of",
      "description": "Aggregation strategy: best_of (first successful leg), merge (concatenate surviving legs), or all (return every leg with no single selection).",
      "enum": [
        "best_of",
        "merge",
        "all"
      ],
      "type": "string"
    }
  },
  "required": [
    "goal",
    "harnesses"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.orchestrate.fanout", goal="<goal>", harnesses=[])
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.orchestrate.fanout", { goal: "<goal>", harnesses: [] });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.orchestrate.fanout/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "goal": "<goal>",
    "harnesses": []
  }
}'

ww.orchestrate.status

READ

Show one orchestrator fan-out: per-harness legs + the selected result.

Parameters

ParameterTypeRequiredDescription
orchestration_idstringrequiredOrchestration ID returned by ww.orchestrate.fanout.

inputSchema

{
  "properties": {
    "orchestration_id": {
      "description": "Orchestration ID returned by ww.orchestrate.fanout.",
      "type": "string"
    }
  },
  "required": [
    "orchestration_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.orchestrate.status", orchestration_id="<orchestration_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.orchestrate.status", { orchestration_id: "<orchestration_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.orchestrate.status/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "orchestration_id": "<orchestration_id>"
  }
}'

ww.proposed_skills.get

READ

Fetch a single ProposedSkill row by proposal_id (#5090).

Parameters

ParameterTypeRequiredDescription
proposal_idstringrequiredProposal id (``prop_<hex>``).
tenant_idstringoptionalTenant id. Defaults to the authenticated MCP context.

inputSchema

{
  "properties": {
    "proposal_id": {
      "description": "Proposal id (``prop_<hex>``).",
      "type": "string"
    },
    "tenant_id": {
      "description": "Tenant id. Defaults to the authenticated MCP context.",
      "type": "string"
    }
  },
  "required": [
    "proposal_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.proposed_skills.get", proposal_id="<proposal_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.proposed_skills.get", { proposal_id: "<proposal_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.proposed_skills.get/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "proposal_id": "<proposal_id>"
  }
}'

ww.proposed_skills.list

READ

List ProposedSkill rows for a tenant, optionally filtered by status (pending_review | accepted | rejected | merged) (#5090).

Parameters

ParameterTypeRequiredDescription
statusstringoptionalOptional status filter. enum: pending_review, accepted, rejected, merged
tenant_idstringoptionalTenant id. Defaults to the authenticated MCP context; cross-tenant param values are rejected.

inputSchema

{
  "properties": {
    "status": {
      "description": "Optional status filter.",
      "enum": [
        "pending_review",
        "accepted",
        "rejected",
        "merged"
      ],
      "type": "string"
    },
    "tenant_id": {
      "description": "Tenant id. Defaults to the authenticated MCP context; cross-tenant param values are rejected.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.proposed_skills.list")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.proposed_skills.list");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.proposed_skills.list/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.proposed_skills.update_status

ADMIN

Transition a proposal from pending_review to accepted, rejected, or merged. Terminal states are terminal; illegal transitions return an ``illegal_transition`` error envelope (#5090).

Parameters

ParameterTypeRequiredDescription
actor_idstringrequiredReviewer id; recorded on the row as ``reviewed_by``.
proposal_idstringrequiredProposal id (``prop_<hex>``).
statusstringrequiredTarget lifecycle status. enum: pending_review, accepted, rejected, merged
tenant_idstringoptionalTenant id. Defaults to the authenticated MCP context.

inputSchema

{
  "properties": {
    "actor_id": {
      "description": "Reviewer id; recorded on the row as ``reviewed_by``.",
      "type": "string"
    },
    "proposal_id": {
      "description": "Proposal id (``prop_<hex>``).",
      "type": "string"
    },
    "status": {
      "description": "Target lifecycle status.",
      "enum": [
        "pending_review",
        "accepted",
        "rejected",
        "merged"
      ],
      "type": "string"
    },
    "tenant_id": {
      "description": "Tenant id. Defaults to the authenticated MCP context.",
      "type": "string"
    }
  },
  "required": [
    "proposal_id",
    "status",
    "actor_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.proposed_skills.update_status", actor_id="<actor_id>", proposal_id="<proposal_id>", status="pending_review")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.proposed_skills.update_status", { actor_id: "<actor_id>", proposal_id: "<proposal_id>", status: "pending_review" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.proposed_skills.update_status/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "actor_id": "<actor_id>",
    "proposal_id": "<proposal_id>",
    "status": "pending_review"
  }
}'

ww.skill.optimize.apply

WRITE

Apply an accepted optimisation candidate by recording a governed SkillVersion. Fails if the candidate is missing, terminal, user-locked, or carries no candidate body (#6669).

Parameters

ParameterTypeRequiredDescription
candidate_idstringrequiredProposal id of the candidate.
actor_idstringoptionalReviewer applying the candidate.
tenant_idstringoptional

inputSchema

{
  "properties": {
    "actor_id": {
      "description": "Reviewer applying the candidate.",
      "type": "string"
    },
    "candidate_id": {
      "description": "Proposal id of the candidate.",
      "type": "string"
    },
    "tenant_id": {
      "type": "string"
    }
  },
  "required": [
    "candidate_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.skill.optimize.apply", candidate_id="<candidate_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.skill.optimize.apply", { candidate_id: "<candidate_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.skill.optimize.apply/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "candidate_id": "<candidate_id>"
  }
}'

ww.skill.optimize.bootstrap

WRITE

Generate a draft, review-pending optimisation benchmark for a skill from its body + capability routes + execution deltas + trace precedents. The benchmark carries BOOTSTRAP_PENDING_REVIEW and refuses to run until reviewed (#6669).

Parameters

ParameterTypeRequiredDescription
skill_bodystringrequiredThe skill markdown body.
skill_idstringrequiredTarget skill slug.
capability_routesarrayoptionalCapabilityRegistry route metadata for the skill.
execution_deltasarrayoptionalExecutionDelta clusters (repeated-work signals).
tenant_idstringoptionalTenant id. Defaults to the authenticated MCP context.
trace_precedentsarrayoptionalTrace-backed precedents; each yields a holdout-eligible case.

inputSchema

{
  "properties": {
    "capability_routes": {
      "description": "CapabilityRegistry route metadata for the skill.",
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "execution_deltas": {
      "description": "ExecutionDelta clusters (repeated-work signals).",
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "skill_body": {
      "description": "The skill markdown body.",
      "type": "string"
    },
    "skill_id": {
      "description": "Target skill slug.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Tenant id. Defaults to the authenticated MCP context.",
      "type": "string"
    },
    "trace_precedents": {
      "description": "Trace-backed precedents; each yields a holdout-eligible case.",
      "items": {
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "skill_id",
    "skill_body"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.skill.optimize.bootstrap", skill_body="<skill_body>", skill_id="<skill_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.skill.optimize.bootstrap", { skill_body: "<skill_body>", skill_id: "<skill_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.skill.optimize.bootstrap/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "skill_body": "<skill_body>",
    "skill_id": "<skill_id>"
  }
}'

ww.skill.optimize.reject

WRITE

Reject an optimisation candidate, closing its proposal (#6669).

Parameters

ParameterTypeRequiredDescription
candidate_idstringrequired
actor_idstringoptional
reasonstringoptionalRejection rationale.
tenant_idstringoptional

inputSchema

{
  "properties": {
    "actor_id": {
      "type": "string"
    },
    "candidate_id": {
      "type": "string"
    },
    "reason": {
      "description": "Rejection rationale.",
      "type": "string"
    },
    "tenant_id": {
      "type": "string"
    }
  },
  "required": [
    "candidate_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.skill.optimize.reject", candidate_id="<candidate_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.skill.optimize.reject", { candidate_id: "<candidate_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.skill.optimize.reject/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "candidate_id": "<candidate_id>"
  }
}'

ww.skill.optimize.run

WRITE

Run a bounded skill optimisation pass against a reviewed benchmark. dry_run returns a cost estimate with no LLM call; a pending-review benchmark is refused (#6669).

Parameters

ParameterTypeRequiredDescription
benchmarkobjectrequiredA SkillOptimizationBenchmark object.
skill_idstringrequired
allow_small_selectionbooleanoptionalApprove a selection set below the size floor.
dry_runbooleanoptionalEstimate cost only.
epsilonnumberoptionalSelection-gate epsilon.
max_cost_usdnumberoptionalCost ceiling for the run.
tenant_idstringoptional

inputSchema

{
  "properties": {
    "allow_small_selection": {
      "description": "Approve a selection set below the size floor.",
      "type": "boolean"
    },
    "benchmark": {
      "description": "A SkillOptimizationBenchmark object.",
      "type": "object"
    },
    "dry_run": {
      "description": "Estimate cost only.",
      "type": "boolean"
    },
    "epsilon": {
      "description": "Selection-gate epsilon.",
      "type": "number"
    },
    "max_cost_usd": {
      "description": "Cost ceiling for the run.",
      "type": "number"
    },
    "skill_id": {
      "type": "string"
    },
    "tenant_id": {
      "type": "string"
    }
  },
  "required": [
    "skill_id",
    "benchmark"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.skill.optimize.run", benchmark={}, skill_id="<skill_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.skill.optimize.run", { benchmark: {}, skill_id: "<skill_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.skill.optimize.run/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "benchmark": {},
    "skill_id": "<skill_id>"
  }
}'

ww.skill.optimize.status

READ

Read a persisted skill optimisation run receipt (tenant-scoped) (#6669).

Parameters

ParameterTypeRequiredDescription
run_idstringrequiredRun id (``skopt_<hex>``).
tenant_idstringoptional

inputSchema

{
  "properties": {
    "run_id": {
      "description": "Run id (``skopt_<hex>``).",
      "type": "string"
    },
    "tenant_id": {
      "type": "string"
    }
  },
  "required": [
    "run_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.skill.optimize.status", run_id="<run_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.skill.optimize.status", { run_id: "<run_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.skill.optimize.status/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "run_id": "<run_id>"
  }
}'

ww.swarm.cancel

WRITE

Cancel a pending or running swarm execution.

Parameters

ParameterTypeRequiredDescription
execution_idstringrequiredSwarm execution ID to cancel.
reasonstringoptionalOptional cancellation reason for audit evidence.

inputSchema

{
  "properties": {
    "execution_id": {
      "description": "Swarm execution ID to cancel.",
      "type": "string"
    },
    "reason": {
      "description": "Optional cancellation reason for audit evidence.",
      "type": "string"
    }
  },
  "required": [
    "execution_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.swarm.cancel", execution_id="<execution_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.swarm.cancel", { execution_id: "<execution_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.swarm.cancel/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "execution_id": "<execution_id>"
  }
}'

ww.swarm.spawn

WRITE

Plan and start a swarm execution from a free-text goal plus budget envelope.

Parameters

ParameterTypeRequiredDescription
goalstringrequiredFree-text goal for the swarm to execute.
auto_approve_tierstringoptionalComma-separated tiers allowed to auto-execute. Only low and medium are accepted. default: "low,medium"
budgetstringoptionalBudget axes as tokens=N,dollars=N,wall=Ns,steps=N.
plan_modestringoptionalPlanner mode override. enum: emergent, self_organizing_emergent, rigid
until_donebooleanoptionalPoll until completed, failed, or cancelled. default: false

inputSchema

{
  "properties": {
    "auto_approve_tier": {
      "default": "low,medium",
      "description": "Comma-separated tiers allowed to auto-execute. Only low and medium are accepted.",
      "type": "string"
    },
    "budget": {
      "description": "Budget axes as tokens=N,dollars=N,wall=Ns,steps=N.",
      "type": "string"
    },
    "goal": {
      "description": "Free-text goal for the swarm to execute.",
      "type": "string"
    },
    "plan_mode": {
      "description": "Planner mode override.",
      "enum": [
        "emergent",
        "self_organizing_emergent",
        "rigid"
      ],
      "type": "string"
    },
    "until_done": {
      "default": false,
      "description": "Poll until completed, failed, or cancelled.",
      "type": "boolean"
    }
  },
  "required": [
    "goal"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.swarm.spawn", goal="<goal>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.swarm.spawn", { goal: "<goal>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.swarm.spawn/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "goal": "<goal>"
  }
}'

ww.swarm.status

READ

List active swarm executions or show one swarm execution.

Parameters

ParameterTypeRequiredDescription
execution_idstringoptionalOptional swarm execution ID to inspect.
limitintegeroptionalMaximum executions to return when listing. default: 50
statusstringoptionalOptional list filter: active, admitted, running, completed, failed, or cancelled. default: "active"

inputSchema

{
  "properties": {
    "execution_id": {
      "description": "Optional swarm execution ID to inspect.",
      "type": "string"
    },
    "limit": {
      "default": 50,
      "description": "Maximum executions to return when listing.",
      "type": "integer"
    },
    "status": {
      "default": "active",
      "description": "Optional list filter: active, admitted, running, completed, failed, or cancelled.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.swarm.status")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.swarm.status");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.swarm.status/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.tools.search

READ

Search the canonical MCP tool catalog by natural-language intent or domain. Returns compact catalog rows so thin harnesses can discover tools outside their initial capability profile (#5015).

Parameters

ParameterTypeRequiredDescription
domainstringoptionalOptional canonical domain prefix to filter by, e.g. 'ww.workflow', 'ww.channel', 'memory'.
intentstringoptionalNatural-language action or goal to resolve.
limitintegeroptionalMaximum matches to return. default: 10

inputSchema

{
  "properties": {
    "domain": {
      "description": "Optional canonical domain prefix to filter by, e.g. 'ww.workflow', 'ww.channel', 'memory'.",
      "type": "string"
    },
    "intent": {
      "description": "Natural-language action or goal to resolve.",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "description": "Maximum matches to return.",
      "type": "integer"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.tools.search")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.tools.search");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.tools.search/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.upgrades.approve

WRITE

Approve an upgrade proposal.

Parameters

ParameterTypeRequiredDescription
proposal_idstringrequiredUpgrade proposal ID.
actor_idstringoptionalApproving actor ID. default: "mcp"

inputSchema

{
  "properties": {
    "actor_id": {
      "default": "mcp",
      "description": "Approving actor ID.",
      "type": "string"
    },
    "proposal_id": {
      "description": "Upgrade proposal ID.",
      "type": "string"
    }
  },
  "required": [
    "proposal_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.upgrades.approve", proposal_id="<proposal_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.upgrades.approve", { proposal_id: "<proposal_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.upgrades.approve/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "proposal_id": "<proposal_id>"
  }
}'

ww.upgrades.dismiss

WRITE

Dismiss an upgrade proposal for 90 days.

Parameters

ParameterTypeRequiredDescription
proposal_idstringrequiredUpgrade proposal ID.
actor_idstringoptionalDismissing actor ID. default: "mcp"

inputSchema

{
  "properties": {
    "actor_id": {
      "default": "mcp",
      "description": "Dismissing actor ID.",
      "type": "string"
    },
    "proposal_id": {
      "description": "Upgrade proposal ID.",
      "type": "string"
    }
  },
  "required": [
    "proposal_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.upgrades.dismiss", proposal_id="<proposal_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.upgrades.dismiss", { proposal_id: "<proposal_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.upgrades.dismiss/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "proposal_id": "<proposal_id>"
  }
}'

ww.upgrades.list

READ

List current Weekly Upgrade Digest proposals.

Parameters

No parameters.

inputSchema

{
  "properties": {},
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.upgrades.list")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.upgrades.list");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.upgrades.list/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.upgrades.pilot

WRITE

Schedule a 1-week, 10% pilot for an upgrade proposal.

Parameters

ParameterTypeRequiredDescription
proposal_idstringrequiredUpgrade proposal ID.
actor_idstringoptionalApproving actor ID. default: "mcp"

inputSchema

{
  "properties": {
    "actor_id": {
      "default": "mcp",
      "description": "Approving actor ID.",
      "type": "string"
    },
    "proposal_id": {
      "description": "Upgrade proposal ID.",
      "type": "string"
    }
  },
  "required": [
    "proposal_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.upgrades.pilot", proposal_id="<proposal_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.upgrades.pilot", { proposal_id: "<proposal_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.upgrades.pilot/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "proposal_id": "<proposal_id>"
  }
}'

ww.workflow.saga.compensate

WRITE

Manually compensate a WorkflowTemplate saga run.

Parameters

ParameterTypeRequiredDescription
run_idstringrequiredSaga run ID.
idempotency_keystringoptionalStable retry key.
reasonstringoptionalRollback reason.

inputSchema

{
  "properties": {
    "idempotency_key": {
      "description": "Stable retry key.",
      "type": "string"
    },
    "reason": {
      "description": "Rollback reason.",
      "type": "string"
    },
    "run_id": {
      "description": "Saga run ID.",
      "type": "string"
    }
  },
  "required": [
    "run_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workflow.saga.compensate", run_id="<run_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workflow.saga.compensate", { run_id: "<run_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workflow.saga.compensate/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "run_id": "<run_id>"
  }
}'

ww.workflow.saga.run

WRITE

Run a reference WorkflowTemplate saga with retry-safe idempotency.

Parameters

ParameterTypeRequiredDescription
template_idstringrequiredWorkflowTemplate ID.
fail_step_idstringoptionalDeterministic failure injection for tests.
idempotency_keystringoptionalStable retry key.
initial_dataobjectoptionalOptional initial data.

inputSchema

{
  "properties": {
    "fail_step_id": {
      "description": "Deterministic failure injection for tests.",
      "type": "string"
    },
    "idempotency_key": {
      "description": "Stable retry key.",
      "type": "string"
    },
    "initial_data": {
      "description": "Optional initial data.",
      "type": "object"
    },
    "template_id": {
      "description": "WorkflowTemplate ID.",
      "type": "string"
    }
  },
  "required": [
    "template_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workflow.saga.run", template_id="<template_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workflow.saga.run", { template_id: "<template_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workflow.saga.run/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "template_id": "<template_id>"
  }
}'

ww.workflow.saga.status

READ

Show one WorkflowTemplate saga run.

Parameters

ParameterTypeRequiredDescription
run_idstringrequiredSaga run ID.

inputSchema

{
  "properties": {
    "run_id": {
      "description": "Saga run ID.",
      "type": "string"
    }
  },
  "required": [
    "run_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workflow.saga.status", run_id="<run_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workflow.saga.status", { run_id: "<run_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workflow.saga.status/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "run_id": "<run_id>"
  }
}'

ww.workflow.template.list

READ

List reference WorkflowTemplate saga templates.

Parameters

No parameters.

inputSchema

{
  "properties": {},
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workflow.template.list")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workflow.template.list");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workflow.template.list/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.workflow.template.show

READ

Show one reference WorkflowTemplate saga template.

Parameters

ParameterTypeRequiredDescription
template_idstringrequiredWorkflowTemplate ID.

inputSchema

{
  "properties": {
    "template_id": {
      "description": "WorkflowTemplate ID.",
      "type": "string"
    }
  },
  "required": [
    "template_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workflow.template.show", template_id="<template_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workflow.template.show", { template_id: "<template_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workflow.template.show/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "template_id": "<template_id>"
  }
}'

ww.workmemory.awareness_snapshot

READ

Return the awareness snapshot bound to a decision trace. Mirrors the SDK ``WorkMemory.awareness_snapshot(trace_id)`` method (#4335). Reuses ``AwarenessSnapshotStore``.

Parameters

ParameterTypeRequiredDescription
trace_idstringrequiredDecision trace id whose awareness snapshot to return.

inputSchema

{
  "properties": {
    "trace_id": {
      "description": "Decision trace id whose awareness snapshot to return.",
      "type": "string"
    }
  },
  "required": [
    "trace_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workmemory.awareness_snapshot", trace_id="<trace_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workmemory.awareness_snapshot", { trace_id: "<trace_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workmemory.awareness_snapshot/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "trace_id": "<trace_id>"
  }
}'

ww.workmemory.contest

WRITE

File a counter-alternative against a decision. Mirrors the SDK ``WorkMemory.contest(decision_id, alternative, evidence_refs)`` method (#4335). Reuses ``ContestationService``.

Parameters

ParameterTypeRequiredDescription
alternativestringrequiredProposed counter-alternative summary.
decision_idstringrequiredDecision id being contested.
evidence_refsarrayoptionalEvidence record IDs supporting the contest.
member_idstringoptionalOptional acting principal id (defaults to 'mcp').
rationalestringoptionalWhy the alternative is better.

inputSchema

{
  "properties": {
    "alternative": {
      "description": "Proposed counter-alternative summary.",
      "type": "string"
    },
    "decision_id": {
      "description": "Decision id being contested.",
      "type": "string"
    },
    "evidence_refs": {
      "description": "Evidence record IDs supporting the contest.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "member_id": {
      "description": "Optional acting principal id (defaults to 'mcp').",
      "type": "string"
    },
    "rationale": {
      "description": "Why the alternative is better.",
      "type": "string"
    }
  },
  "required": [
    "decision_id",
    "alternative"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workmemory.contest", alternative="<alternative>", decision_id="<decision_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workmemory.contest", { alternative: "<alternative>", decision_id: "<decision_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workmemory.contest/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "alternative": "<alternative>",
    "decision_id": "<decision_id>"
  }
}'

ww.workmemory.decision_trace

READ

Return a single decision trace by id. Mirrors the SDK ``WorkMemory.decision_trace(trace_id)`` substrate method (#4335). Reuses ``DecisionEventCaptureService`` — no new backend logic.

Parameters

ParameterTypeRequiredDescription
trace_idstringrequiredDecision trace id to fetch.

inputSchema

{
  "properties": {
    "trace_id": {
      "description": "Decision trace id to fetch.",
      "type": "string"
    }
  },
  "required": [
    "trace_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workmemory.decision_trace", trace_id="<trace_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workmemory.decision_trace", { trace_id: "<trace_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workmemory.decision_trace/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "trace_id": "<trace_id>"
  }
}'

ww.workmemory.nudges

READ

Return the bounded recursive-self-improvement nudge projection: a union of applied/proposed learnings, pending proposed skills, and decision-trace precedents ('you solved this before'). Gated on the per-tenant capture opt-in — empty (never an error) when the tenant has opted out. Read-side only; creates no new data (#6267).

Parameters

ParameterTypeRequiredDescription
limitintegeroptionalMaximum nudges to return (default 10, max 200). default: 10
session_idstringoptionalOptional session scope for precedent nudges.
tenant_idstringoptionalTenant id. Defaults to the authenticated MCP context; cross-tenant param values are rejected.

inputSchema

{
  "properties": {
    "limit": {
      "default": 10,
      "description": "Maximum nudges to return (default 10, max 200).",
      "type": "integer"
    },
    "session_id": {
      "description": "Optional session scope for precedent nudges.",
      "type": "string"
    },
    "tenant_id": {
      "description": "Tenant id. Defaults to the authenticated MCP context; cross-tenant param values are rejected.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workmemory.nudges")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workmemory.nudges");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workmemory.nudges/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

ww.workmemory.precedents

READ

Return precedent matches similar to the given description. Mirrors the SDK ``WorkMemory.precedents(similar_to, top_k)`` substrate method (#4335). Reuses ``PrecedentQuery``.

Parameters

ParameterTypeRequiredDescription
descriptionstringrequiredFree-text description to search precedents for.
top_kintegeroptionalMaximum number of precedents to return (default 10). default: 10

inputSchema

{
  "properties": {
    "description": {
      "description": "Free-text description to search precedents for.",
      "type": "string"
    },
    "top_k": {
      "default": 10,
      "description": "Maximum number of precedents to return (default 10).",
      "type": "integer"
    }
  },
  "required": [
    "description"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workmemory.precedents", description="<description>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workmemory.precedents", { description: "<description>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workmemory.precedents/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "description": "<description>"
  }
}'

ww.workmemory.replay

READ

Replay a previously captured decision trace. Mirrors the SDK ``WorkMemory.replay(decision_id)`` method (#4335). Reuses ``DecisionTraceReplayService``.

Parameters

ParameterTypeRequiredDescription
decision_idstringrequiredOriginal decision id to replay.

inputSchema

{
  "properties": {
    "decision_id": {
      "description": "Original decision id to replay.",
      "type": "string"
    }
  },
  "required": [
    "decision_id"
  ],
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workmemory.replay", decision_id="<decision_id>")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workmemory.replay", { decision_id: "<decision_id>" });
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workmemory.replay/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {
    "decision_id": "<decision_id>"
  }
}'

ww.workmemory.subscribe_events_replay

READ

Replay durable events from the tenant event bus. Used by MCP clients that cannot keep SSE open. SDK callers should use ``WorkMemory.subscribe_events`` for live streaming. (#4335)

Parameters

ParameterTypeRequiredDescription
channelstringoptionalChannel filter mirroring the SSE endpoints. enum: runtime, mission, calendar, global default: "runtime"
limitintegeroptionalMax events to replay (default 200, max 1000). default: 200
sincestringoptionalOptional ISO timestamp lower bound.

inputSchema

{
  "properties": {
    "channel": {
      "default": "runtime",
      "description": "Channel filter mirroring the SSE endpoints.",
      "enum": [
        "runtime",
        "mission",
        "calendar",
        "global"
      ],
      "type": "string"
    },
    "limit": {
      "default": 200,
      "description": "Max events to replay (default 200, max 1000).",
      "type": "integer"
    },
    "since": {
      "description": "Optional ISO timestamp lower bound.",
      "type": "string"
    }
  },
  "type": "object"
}

Example usage

Python SDK
from workweaver_memory import WorkMemory

client = WorkMemory(api_key="ww_...")
result = client.call("ww.workmemory.subscribe_events_replay")
TypeScript SDK
import { WorkMemory } from "@workweaver/memory";

const client = new WorkMemory({ apiKey: "ww_..." });
const result = await client.call("ww.workmemory.subscribe_events_replay");
Raw HTTP
curl -X POST https://workweaver.ai/memory/mcp/v1/tools/ww.workmemory.subscribe_events_replay/call \
  -H "Authorization: Bearer ww_..." \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {}
}'

No tools match your search.