mcp
What this MCP does
Manages Nestr workspaces, roles, circles, tensions, governance proposals, comments, daily plans, graph relationships, agents, and connected tools for self-organizing teams.
Tools
Input schema
{'type': 'object', 'required': ['nestId', 'body'], 'properties': {'body': {'type': 'string', 'description': "Comment text. Supports HTML and @mentions. Mentions MUST use literal curly braces: `@{userId:roleId}`, NOT `@userId`. Without braces nothing is linked and nobody is notified. Forms: `@{userId:roleId}` (preferred, names the role), `@{userId}`, `@{email}`, `@{circle}` (all fillers in the nearest ancestor circle). The second id MUST be a ROLE or CIRCLE nest, never the project, task or tension you are commenting on: the mention renders that nest's title where the role name belongs, so a project id produces 'Henk as Write a weekly blog post', which reads as though the project were his role. When you do not know which role the person is acting in, use `@{userId}` rather than substituting the nest you happen to be working on."}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': "Optional label IDs to attach at creation (e.g. 'decision', 'question', or a custom ID). Personal labels are auto-scoped to the caller. Discover IDs via nestr_list_labels / nestr_list_personal_labels."}, 'nestId': {'type': 'string', 'description': 'Nest or conversation the comment belongs to. A comment ID instead replies inside that thread. Direct-message conversations are flat, so a message ID there lands on the conversation and the response says where.'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'relation', 'targetId'], 'properties': {'nestId': {'type': 'string', 'description': 'Source nest ID'}, 'relation': {'type': 'string', 'description': "Relation name (e.g., 'meeting' to link a tension to a meeting)"}, 'targetId': {'type': 'string', 'description': 'Target nest ID to link to'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'labelId'], 'properties': {'nestId': {'type': 'string', 'description': 'Nest ID'}, 'labelId': {'type': 'string', 'description': "Label ID to add (e.g., 'project', 'now', or a custom label ID)"}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId'], 'properties': {'_id': {'type': 'string', 'description': 'ID of an existing governance item to change or remove. Omit to propose a new item.'}, 'due': {'type': 'string', 'description': 'Due or re-election date, ISO. For an election, the term end; omit for no term.'}, 'role': {'type': 'string', 'description': 'The role this output belongs to, for an operational output (pathway 3/4). Pair with users: users is WHO does it, role is the role it is asked of, and the work request names both ("Ada as Systems: ..."). A role id, not a title. Distinct from roleId, which is election mode.'}, 'title': {'type': 'string', 'description': 'Title for the governance item'}, 'users': {'type': 'array', 'items': {'type': 'string'}, 'description': 'User IDs to assign. For an election (with roleId), the one user being elected.'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': "Item type, e.g. ['role'], ['circle'], ['policy'], ['accountability'], ['domain']"}, 'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'roleId': {'type': 'string', 'description': 'ELECTION mode: the electable role to fill (Facilitator, Secretary, Rep Link or any electable role). Pair with users:[oneUserId] and optional due. Never with _id.'}, 'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Domain titles on a role (replaces all; children tools for individual edits)'}, 'purpose': {'type': 'string', 'description': 'Only for workspaces, circles and roles: a short aspirational statement. Details belong in description, not here. Supports HTML.'}, 'parentId': {'type': 'string', 'description': 'Parent ID — use to move/restructure items (e.g., move role to different circle)'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}, 'removeNest': {'type': 'boolean', 'description': 'With _id, propose deleting that governance item; it goes when the proposal is accepted. Not nestr_remove_tension_part, which undoes a part you already added.'}, 'description': {'type': 'string', 'description': 'The primary content field — detailed information about the item. Supports Markdown and HTML.'}, 'accountabilities': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Accountability titles on a role (replaces all; children tools for individual edits)'}}}
Input schema
{'type': 'object', 'required': ['nestIds'], 'properties': {'nestIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Array of nest IDs to add to the daily plan'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'username'], 'properties': {'fullName': {'type': 'string', 'description': 'Full name (for new accounts)'}, 'language': {'type': 'string', 'description': "Language preference (e.g., 'en', 'nl')"}, 'username': {'type': 'string', 'description': 'Email address of the user to add'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Input schema
{'type': 'object', 'properties': {'path': {'type': 'string', 'description': "Return the full schema for one path, e.g. '/nests/{id}/children'."}, 'search': {'type': 'string', 'description': "Filter operations by keyword against path and summary, e.g. 'meeting', 'tension', 'duration'."}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'connectorId', 'ownerType', 'ownerId'], 'properties': {'ownerId': {'type': 'string', 'description': "Owner ID. role: the role nest ID. role-domain: the domain nest ID. workspace: the workspace ID. user: the person's user ID. agent: the bot's user ID."}, 'ownerType': {'enum': ['role', 'workspace', 'role-domain', 'user', 'agent'], 'type': 'string', 'description': "Owner type. 'role' is the usual path: pass the role nest ID and the server finds or creates the connector's domain under it. 'role-domain' targets an existing domain directly. 'workspace' gives everyone. 'user' is one person's own account and 'agent' is one bot's own: both are personal, both are workspace-admin only, and both are wrong unless the thing really belongs to that single principal."}, 'connectorId': {'type': 'string', 'description': 'ID of an enabled connector from nestr_list_connectors'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID the connector and owner belong to'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'nestIds'], 'properties': {'nestIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Array of nest IDs in the desired order'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'name'], 'properties': {'name': {'type': 'string', 'description': "The AGENT's own name, as its identity calls it (e.g. 'Collab'). Not the name of the work: that belongs to the role this agent will fill."}, 'agentConfig': {'type': 'object', 'description': "Runtime wiring, not persona: { runtimeCallbackUrl (https, or http to a *.svc.cluster.local service), tokenTtlSeconds (30-1800) }. Omit for an agent that runs on Nestr's own runtime."}, 'description': {'type': 'string', 'description': 'What the agent is LIKE: its character and what it is careful about. Not its instructions, which belong in a skill on the role.'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID to create the agent in'}, 'roleAssignable': {'type': 'boolean', 'description': 'Defaults to true, meaning it MAY be assigned to a role. It still assists while it holds none; assigning it to one is what ends that. Pass false for an ASSISTANT, which can never be assigned and so can never stop acting for a person. See the tool description.'}}}
Input schema
{'type': 'object', 'required': ['title'], 'properties': {'title': {'type': 'string', 'description': 'Title of the inbox item (plain text, HTML stripped)'}, 'description': {'type': 'string', 'description': 'Additional details or context (supports Markdown and HTML)'}}}
Input schema
{'type': 'object', 'required': ['parentId', 'title'], 'properties': {'due': {'type': 'string', 'description': 'Due date (ISO 8601). SET THIS whenever the item is meant to happen at a time. It is a field, not a title: the sweep that fires dated work reads `due` and nothing else, so a task called "Daily digest, 28 Aug" with no due is invisible to it and simply never runs, with nothing anywhere saying so. For projects/tasks: deadline. For meetings: start time.'}, 'title': {'type': 'string', 'description': 'Title of the new nest (plain text, HTML tags stripped)'}, 'users': {'type': 'array', 'items': {'type': 'string'}, 'description': "User IDs to assign. ALWAYS set this for projects and tasks — use the role filler's user ID. Placing a nest under a role does NOT auto-assign it."}, 'fields': {'type': 'object', 'description': "Structured field values to set on creation (e.g., { 'project.status': 'Current' }, { 'skill.type': 'process' }). Same shape as nestr_update_nest fields — saves a follow-up update call."}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': "Label IDs to apply (e.g., 'project', 'role', 'circle')"}, 'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': "Domain titles for roles/circles. Each becomes a domain child nest. Only used when labels include 'role' or 'circle'. Requires workspaceId."}, 'purpose': {'type': 'string', 'description': 'Only for workspaces, circles and roles: a short aspirational statement. Details belong in description, not here. Supports HTML.'}, 'parentId': {'type': 'string', 'description': 'Parent nest ID (workspace, circle, or project)'}, 'description': {'type': 'string', 'description': 'The primary content field: details, context, acceptance criteria. Structured data goes in fields, progress in comments. Supports Markdown and HTML.'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID. Required when creating roles/circles with accountabilities or domains.'}, 'accountabilities': {'type': 'array', 'items': {'type': 'string'}, 'description': "Accountability titles for roles/circles. Each becomes an accountability child nest. Only used when labels include 'role' or 'circle'. Requires workspaceId."}}}
Input schema
{'type': 'object', 'required': ['title'], 'properties': {'icon': {'type': 'string', 'description': 'Label icon identifier'}, 'color': {'type': 'string', 'description': "Label color (hex code, e.g., '#FF5733')"}, 'title': {'type': 'string', 'description': 'Label title'}, 'description': {'type': 'string', 'description': 'Label description'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'title'], 'properties': {'needs': {'type': 'string', 'description': 'The need that is alive — what personal or organizational need is not being met (plain text)'}, 'title': {'type': 'string', 'description': 'The gap — what is the difference between current reality and desired state (plain text)'}, 'nestId': {'type': 'string', 'description': 'ID of the role or circle to create the tension on. Place on a role to indicate that role is sensing the tension. Place on a circle for cross-role or governance tensions (use individual-action label if sensed personally without role authority).'}, 'feeling': {'type': 'string', 'description': 'The feeling this tension evokes — separated to keep the organizational response clean (plain text)'}, 'description': {'type': 'string', 'description': 'The observable facts — what you see/hear/experience (supports Markdown and HTML)'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId', 'partId', 'title', 'labels'], 'properties': {'title': {'type': 'string', 'description': 'Title for the new accountability or domain'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': "Labels defining the type: ['accountability'] or ['domain']"}, 'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'partId': {'type': 'string', 'description': 'Part ID'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}}}
Input schema
{'type': 'object', 'required': ['title'], 'properties': {'apps': {'type': 'array', 'items': {'enum': ['okr', 'feedback', 'insights'], 'type': 'string'}, 'description': "Apps to enable (e.g., ['okr', 'feedback']). 'insights' requires pro plan."}, 'plan': {'enum': ['starter', 'pro'], 'type': 'string', 'description': "Subscription plan for collaborative workspaces. Defaults to 'pro' (17-day trial)."}, 'type': {'enum': ['personal', 'collaborative'], 'type': 'string', 'description': "'personal' for individual use (free forever), 'collaborative' for team use (free trial). Defaults to 'collaborative'."}, 'title': {'type': 'string', 'description': 'Workspace name'}, 'layout': {'enum': ['board', 'list'], 'type': 'string', 'description': "Layout style for personal workspaces. 'board' creates kanban columns (Todo, Doing, Done)."}, 'purpose': {'type': 'string', 'description': 'Aspirational future state of the organization — a short north-star statement, not project details'}, 'governance': {'enum': ['holacracy', 'sociocracy', 'roles_circles'], 'type': 'string', 'description': "Self-organization model. Defaults to 'roles_circles' (generic role-based)."}}}
Input schema
{'type': 'object', 'required': ['commentId'], 'properties': {'commentId': {'type': 'string', 'description': 'Comment ID to delete'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'fileId'], 'properties': {'fileId': {'type': 'string', 'description': 'File ID from nestr_get_nest_files'}, 'nestId': {'type': 'string', 'description': 'Nest or comment ID the file is attached to'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'nestId': {'type': 'string', 'description': 'Nest ID to delete'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'nestId': {'type': 'string', 'description': 'The series, or any occurrence of it.'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId'], 'properties': {'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'tensionId': {'type': 'string', 'description': 'Tension ID to delete'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId', 'partId', 'childId'], 'properties': {'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'partId': {'type': 'string', 'description': 'Part ID'}, 'childId': {'type': 'string', 'description': 'Child ID to soft-delete'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}}}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', 'required': ['threadId', 'reason'], 'properties': {'reason': {'type': 'string', 'description': 'One or two sentences for whoever picks this up: what is needed and what has been tried. They can read the thread, so do not summarise it.'}, 'threadId': {'type': 'string', 'description': 'Thread id to escalate'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'nestId': {'type': 'string', 'description': 'The nest to diagnose (a single id).'}, 'whoCan': {'type': 'string', 'description': 'Comma-separated ops (read,update,delete,create) to also list who can perform each on this nest.'}, 'forUser': {'type': 'string', 'description': 'Diagnose rights for this user id instead of the caller. Requires the caller to be an admin of the nest.'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'agentUserId'], 'properties': {'agentUserId': {'type': 'string', 'description': "The agent's bot user ID"}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID the agent belongs to'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'circleId'], 'properties': {'circleId': {'type': 'string', 'description': 'Circle ID'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'circleId'], 'properties': {'page': {'type': 'number', 'description': 'Page number (1-indexed)'}, 'sort': {'type': 'string', 'description': "Sort field: title, createdAt, updatedAt, due, activityAt, order. Prefix '-' to reverse. For 'recently active' use '-activityAt' (includes children), not '-updatedAt' (own edits only)."}, 'limit': {'type': 'number', 'description': 'Omit on first call to see meta.total count'}, 'circleId': {'type': 'string', 'description': 'Circle ID'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'depth': {'oneOf': [{'type': 'number'}, {'enum': ['all'], 'type': 'string'}], 'description': "How deep below the context nest to look for comments. 0 (default) returns only comments directly on this nest; N includes comments on descendants up to N levels deep; 'all' includes comments on this nest and every descendant."}, 'nestId': {'type': 'string', 'description': "Nest ID to get comments from. Pass a workspace ID to gather communication across the whole workspace (combine with depth='all')."}, 'unread': {'type': 'boolean', 'description': 'true for comments you have not read, false for the ones you have. Omit for all. Combine with depth to sweep a circle for what you have missed.'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'connectionId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID the binding belongs to'}, 'connectionId': {'type': 'string', 'description': 'Binding ID from nestr_list_connections'}}}
Input schema
{'type': 'object', 'properties': {'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['threadId'], 'properties': {'depth': {'type': ['number', 'string'], 'description': "Include posts on descendant nests, or 'all'"}, 'unread': {'type': 'boolean', 'description': 'true for unread posts, false for read ones. Omit for all.'}, 'threadId': {'type': 'string', 'description': 'Thread id'}}}
Input schema
{'type': 'object', 'required': ['threadId'], 'properties': {'unread': {'type': 'boolean', 'description': 'true embeds unread posts, false embeds read ones'}, 'threadId': {'type': 'string', 'description': 'Thread id'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'relation'], 'properties': {'page': {'type': 'number', 'description': 'Page number for pagination'}, 'limit': {'type': 'number', 'description': 'Max results per page (default 50)'}, 'nestId': {'type': 'string', 'description': 'Nest ID to get graph links for'}, 'relation': {'type': 'string', 'description': "Relation name (e.g., 'meeting' for meeting agenda items)"}, 'direction': {'enum': ['outgoing', 'incoming'], 'type': 'string', 'description': "Link direction: 'outgoing' (default) = links FROM this nest, 'incoming' = links TO this nest"}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'nestId': {'type': 'string', 'description': 'Inbox item ID'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'metricId'], 'properties': {'metricId': {'type': 'string', 'description': "Metric ID/type from getInsights (e.g., 'role_count', 'tactical_completed')"}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'metricId'], 'properties': {'to': {'type': 'string', 'description': 'End date (ISO format)'}, 'from': {'type': 'string', 'description': 'Start date (ISO format)'}, 'limit': {'type': 'number', 'description': 'Maximum data points'}, 'metricId': {'type': 'string', 'description': 'Metric ID from getInsights'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'nestId': {'type': 'string', 'description': 'Filter metrics for a specific circle/nest (Pro plan only). Cannot be combined with userId.'}, 'userId': {'type': 'string', 'description': 'Filter metrics for a specific user (Pro plan only). Cannot be combined with nestId.'}, 'endDate': {'type': 'string', 'description': 'End date for metrics query (ISO format)'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}, 'includeSubCircles': {'type': 'boolean', 'description': 'Include metrics from sub-circles (default: true). Cannot be false when userId is provided.'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'labelId'], 'properties': {'labelId': {'type': 'string', 'description': 'Label ID'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Input schema
{'type': 'object', 'properties': {'fullWorkspaces': {'type': 'boolean', 'description': 'Set true to include full workspace details. Recommended on first call.'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'hints': {'enum': ['summary', 'full', True, False], 'type': ['string', 'boolean'], 'description': "Contextual hints. 'summary' keeps the per-nest signal (type, severity, count, url, and the `query` that finds every other nest with the same problem) and drops the fixed teaching prose and endpoint list. 'full' is the whole payload. false for none. Defaults to 'full' on a single read, which is what you want when you asked about one nest."}, 'nestId': {'type': 'string', 'description': "Nest ID, or comma-separated IDs for a batch (e.g. 'id1,id2'). Keep the URL under 2000 chars."}, 'rights': {'type': 'boolean', 'description': "Single nest. The caller's composed rights (self read/update/delete) plus a deny trace naming what blocks each op, and why."}, 'whoCan': {'type': 'string', 'description': 'Single nest. Comma-separated ops (read,update,delete,create): who can perform each (admins + role-holders), with contact for admin callers.'}, 'forUser': {'type': 'string', 'description': 'Single nest, with rights=true. Rights for this user id instead of the caller. Caller must be a nest admin.'}, 'hintTypes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Keep only these hint types.'}, 'provenance': {'type': 'boolean', 'description': 'Single nest. Which label and circle context defines each field and property, e.g. why a role has a given icon.'}, 'minSeverity': {'enum': ['info', 'suggestion', 'warning', 'alert'], 'type': 'string', 'description': 'Drop hints below this severity.'}, 'fieldsMetaData': {'type': 'boolean', 'description': 'Set to true to include field schema metadata (available options, field types)'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'page': {'type': 'number', 'description': 'Page number (1-indexed)'}, 'sort': {'type': 'string', 'description': "Sort field: title, createdAt, updatedAt, due, activityAt, order. Prefix '-' to reverse. For 'recently active' use '-activityAt' (includes children), not '-updatedAt' (own edits only)."}, 'hints': {'enum': ['summary', 'full', True, False], 'type': ['string', 'boolean'], 'description': "Contextual hints. 'summary' keeps the per-nest signal (type, severity, count, url, and the `query` that finds every other nest with the same problem) and drops the fixed teaching prose and endpoint list. 'full' is the whole payload. false for none. Defaults to 'summary' here: a listing at 'full' repeats the same paragraph once per row."}, 'limit': {'type': 'number', 'description': 'Omit on first call to see meta.total count'}, 'nestId': {'type': 'string', 'description': 'Parent nest ID'}, 'search': {'type': 'string', 'description': "Search scoped to this nest, full operator syntax. Ask for the subset you want instead of fetching every child and filtering: `label:role` for a circle's roles, `label:project fields.project.status:Waiting` for its waiting projects. `depth:1` is applied when you set no depth and the response says so in `appliedDefaults`; pass `depth:2` or higher to reach further down."}, 'hintTypes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Keep only these hint types.'}, '_listTitle': {'type': 'string', 'description': 'Short descriptive title for the list UI header (e.g., "Tasks for Website Redesign", "API project sub-tasks"). Include the parent name for context.'}, 'linkedUsers': {'type': 'boolean', 'description': 'Resolve every user id in the results to a full user, returned once in `linked.users`. One request instead of one per id.'}, 'minSeverity': {'enum': ['info', 'suggestion', 'warning', 'alert'], 'type': 'string', 'description': 'Drop hints below this severity.'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'nestId': {'type': 'string', 'description': 'Nest or comment ID whose file attachments to list'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'page': {'type': 'number', 'description': 'Page number (1-indexed)'}, 'sort': {'type': 'string', 'description': "Sort field: title, createdAt, updatedAt, due, activityAt, order. Prefix '-' to reverse. For 'recently active' use '-activityAt' (includes children), not '-updatedAt' (own edits only)."}, 'limit': {'type': 'number', 'description': 'Omit on first call to see meta.total count'}, '_listTitle': {'type': 'string', 'description': 'Short descriptive title for the list UI header (e.g., "Engineering projects", "All projects"). Omit for default.'}, 'linkedUsers': {'type': 'boolean', 'description': 'Resolve every user id in the results to a full user, returned once in `linked.users`. One request instead of one per id.'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId'], 'properties': {'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId', 'partId'], 'properties': {'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'partId': {'type': 'string', 'description': 'Part ID to get changes for'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId', 'partId'], 'properties': {'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'partId': {'type': 'string', 'description': 'Part ID'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId'], 'properties': {'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId'], 'properties': {'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'userId'], 'properties': {'userId': {'type': 'string', 'description': 'User ID'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Input schema
{'type': 'object', 'properties': {'topic': {'type': 'string', 'description': "Internal topic key or help-article slug. Use 'topics' for the full list of internal topics."}, 'search': {'type': 'string', 'description': 'Free-text query against the public help articles. Returns slugs to fetch via `topic`.'}, 'maxImages': {'type': 'integer', 'minimum': 1, 'description': 'Article mode. Caps the default selection (first N content images). Default 3, max 6. Ignored when imageIndexes is set.'}, 'imageIndexes': {'type': 'array', 'items': {'type': 'integer', 'minimum': 0}, 'description': 'Article mode. Attach screenshots by [index] from the numbered list in a prior response, e.g. [4,5,6]. Overrides the default selection and the maxImages cap, attaching exactly these in order.'}, 'includeImages': {'type': 'boolean', 'description': 'Article mode. Default false (markdown plus a numbered image-URL list). True attaches the first maxImages content screenshots inline, downscaled. Header, thumbnail and uncaptioned images are never auto-attached; reach those with imageIndexes.'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'nestId': {'type': 'string', 'description': 'Nest to roll up. A circle or the workspace root is the useful scope.'}, 'hintTypes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Count only these hint types. Omit for every type this can compute.'}, 'sampleSize': {'type': 'number', 'description': 'Example nests per type. Default 10, max 100, 0 for counts only.'}, 'minSeverity': {'enum': ['info', 'suggestion', 'warning', 'alert'], 'type': 'string', 'description': 'Drop rules below this severity. \'warning\' is the useful floor for "what needs attention".'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'page': {'type': 'number', 'description': 'Page number (1-indexed)'}, 'sort': {'type': 'string', 'description': "Sort field: title, createdAt, updatedAt, due, activityAt, order. Prefix '-' to reverse. For 'recently active' use '-activityAt' (includes children), not '-updatedAt' (own edits only)."}, 'limit': {'type': 'number', 'description': 'Omit on first call to see meta.total count'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID whose bindings to list'}, 'includeDisabled': {'type': 'boolean', 'description': 'Include removed bindings. Default false.'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID whose connector catalog to list'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID whose available connector templates to list'}}}
Input schema
{'type': 'object', 'properties': {'page': {'type': 'number', 'description': 'Page number, 1-based'}, 'limit': {'type': 'number', 'description': 'Threads per page (default 50, max 200)'}, 'unread': {'type': 'boolean', 'description': 'Only threads with messages you have not read'}, 'withUser': {'type': 'string', 'description': 'Only threads with this person: user id, username or email'}, 'includeCompleted': {'type': 'boolean', 'description': 'Also return closed conversations (left out by default)'}}}
Input schema
{'type': 'object', 'properties': {'completedAfter': {'type': 'string', 'description': 'Include completed items from this date (ISO format). If omitted, only non-completed items are returned. For reordering, this default is usually sufficient — nestr_reorder_inbox only requires the IDs of items you want to reposition.'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'page': {'type': 'number', 'description': 'Page number (1-indexed)'}, 'limit': {'type': 'number', 'description': 'Omit on first call to see meta.total count'}, 'search': {'type': 'string', 'description': 'Search query'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Input schema
{'type': 'object', 'properties': {'context': {'type': 'string', 'description': 'Optional context filter (e.g., workspace ID or circle ID)'}}}
Input schema
{'type': 'object', 'properties': {'skip': {'type': 'number', 'description': 'Number of results to skip (default 0)'}, 'type': {'enum': ['all', 'me', 'relevant'], 'type': 'string', 'description': "Filter by type: 'all' (default), 'me' (direct), 'relevant' (delayed)"}, 'group': {'type': 'string', 'description': 'Filter by group (mentions, replies, direct_message, reactions, updates, governance)'}, 'limit': {'type': 'number', 'description': 'Max results (default 50, max 200)'}, 'showRead': {'type': 'boolean', 'description': 'Include already-read notifications (default false)'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'limit': {'type': 'number', 'description': 'Occurrences per page. Default 10, capped at 50.'}, 'cursor': {'type': ['number', 'string'], 'description': 'Walk outward from this instant, exclusive. Pass back nextCursor from the previous page. Defaults to now.'}, 'nestId': {'type': 'string', 'description': 'The series, or any occurrence of it. Both resolve to the same series.'}, 'direction': {'enum': ['future', 'past'], 'type': 'string', 'description': "'future' (default) lists upcoming occurrences, soonest first. 'past' lists history, most recent first."}}}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': "Queue key, e.g. 'support'"}, 'unread': {'type': 'boolean', 'description': 'Only threads you have not read'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'page': {'type': 'number', 'description': 'Page number (1-indexed)'}, 'sort': {'type': 'string', 'description': "Sort field: title, createdAt, updatedAt, due, activityAt, order. Prefix '-' to reverse. For 'recently active' use '-activityAt' (includes children), not '-updatedAt' (own edits only)."}, 'limit': {'type': 'number', 'description': 'Omit on first call to see meta.total count'}, 'linkedUsers': {'type': 'boolean', 'description': 'Resolve every user id in the results to a full user, returned once in `linked.users`. One request instead of one per id.'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'page': {'type': 'number', 'description': 'Page number (1-indexed)'}, 'sort': {'type': 'string', 'description': "Sort field: title, createdAt, updatedAt, due, activityAt, order. Prefix '-' to reverse. For 'recently active' use '-activityAt' (includes children), not '-updatedAt' (own edits only)."}, 'limit': {'type': 'number', 'description': 'Max results to return'}, 'nestId': {'type': 'string', 'description': 'ID of the circle or role to list tensions for'}, 'search': {'type': 'string', 'description': 'Search query to filter tensions'}}}
Input schema
{'type': 'object', 'properties': {'context': {'type': 'string', 'description': 'Optional context filter (e.g., workspace ID or circle ID)'}}}
Input schema
{'type': 'object', 'properties': {'userId': {'type': 'string', 'description': 'User ID to look up. Omit for yourself. Requires workspaceId when set.'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID. Required when userId is set; omit to answer across every workspace you belong to.'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'page': {'type': 'number', 'description': 'Page number (1-indexed)'}, 'limit': {'type': 'number', 'description': 'Omit on first call to see meta.total count'}, 'agents': {'enum': ['only', 'exclude'], 'type': 'string', 'description': "'only' for this workspace's agents, 'exclude' for its people. Omit for both."}, 'search': {'type': 'string', 'description': 'Search by name or email'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID'}}}
Input schema
{'type': 'object', 'properties': {'page': {'type': 'number', 'description': 'Page number (1-indexed) for pagination'}, 'sort': {'type': 'string', 'description': "Sort field: title, createdAt, updatedAt, due, activityAt, order. Prefix '-' to reverse. For 'recently active' use '-activityAt' (includes children), not '-updatedAt' (own edits only)."}, 'limit': {'type': 'number', 'description': 'Omit on first call to see meta.total count'}, 'search': {'type': 'string', 'description': 'Search query to filter workspaces'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', 'required': ['postId'], 'properties': {'postId': {'type': 'string', 'description': 'Post to mark read up to'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId', 'partId'], 'properties': {'due': {'type': 'string', 'description': 'Updated due date (ISO format)'}, 'role': {'type': 'string', 'description': 'Updated role for an operational output. A role id; pass an empty string to clear it.'}, 'title': {'type': 'string', 'description': 'Updated title'}, 'users': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Updated user assignments'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Updated labels'}, 'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'partId': {'type': 'string', 'description': 'Part ID to modify'}, 'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Updated domains (replaces all; children tools for individual edits)'}, 'purpose': {'type': 'string', 'description': 'Only for workspaces, circles and roles: a short aspirational statement. Details belong in description, not here. Supports HTML.'}, 'parentId': {'type': 'string', 'description': 'Updated parent ID'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}, 'description': {'type': 'string', 'description': 'Updated description — the primary content field. Supports Markdown and HTML.'}, 'accountabilities': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Updated accountabilities (replaces all; children tools for individual edits)'}}}
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max activity items to return (default 50, max 200).'}, 'withUser': {'type': 'string', 'description': "Scope DM considerations to the conversation with this user id. Agent internal considerations from direct-message runs are redacted to an anonymous marker unless you name that conversation's counterpart here."}}}
Input schema
{'type': 'object', 'required': ['threadId', 'body'], 'properties': {'body': {'type': 'string', 'description': 'Message text. Supports HTML and Markdown.'}, 'threadId': {'type': 'string', 'description': 'Thread id'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'fileId'], 'properties': {'fileId': {'type': 'string', 'description': 'File ID from nestr_get_nest_files'}, 'nestId': {'type': 'string', 'description': 'Nest or comment ID the file is attached to'}}}
Input schema
{'type': 'object', 'required': ['workspaceId'], 'properties': {'name': {'type': 'string', 'description': "Unique connector name within the workspace catalog. Required unless templateId is given, where it defaults to the template's own name."}, 'type': {'enum': ['mcp', 'cli', 'api'], 'type': 'string', 'description': "Transport: 'mcp' (MCP server over a url), 'api' (REST endpoint over a url), or 'cli' (a command). Required unless templateId is given."}, 'config': {'type': 'object', 'description': 'Transport config, no secret. mcp/api need a url, cli a command. Optional non-secret headers go under headers.'}, 'exposure': {'type': 'object', 'description': "Which owners may bind: { userAgent: boolean, domainGated: boolean }. domainGated:true allows binding to a role's domain."}, 'templateId': {'type': 'string', 'description': 'Id of a template from nestr_list_connector_templates. Given this, everything else is filled in from the template and you should omit type/config/capabilities/exposure/authStrategy. ALWAYS prefer this over hand-registering a vendor the deployment already knows.'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID to register the connector in'}, 'authStrategy': {'enum': ['secret', 'oauth2'], 'type': 'string', 'description': "How a principal connects: 'secret' (one-time, via the Connect button) or 'oauth2'. The agent never sees it."}, 'capabilities': {'type': 'object', 'description': '{ discover: boolean, tools: [{ name, description, inputSchema }] }. discover:true lets the connector self-describe its tools at runtime.'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'connectionId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID the binding belongs to'}, 'connectionId': {'type': 'string', 'description': 'Binding ID from nestr_list_connections'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'connectorId'], 'properties': {'connectorId': {'type': 'string', 'description': 'ID of the connector to remove'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID the connector belongs to'}}}
Input schema
{'type': 'object', 'required': ['nestIds'], 'properties': {'nestIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Array of nest IDs to remove from the daily plan'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'relation', 'targetId'], 'properties': {'nestId': {'type': 'string', 'description': 'Source nest ID'}, 'relation': {'type': 'string', 'description': "Relation name (e.g., 'meeting')"}, 'targetId': {'type': 'string', 'description': 'Target nest ID to unlink'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'labelId'], 'properties': {'nestId': {'type': 'string', 'description': 'Nest ID'}, 'labelId': {'type': 'string', 'description': 'Label ID to remove'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId', 'partId'], 'properties': {'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'partId': {'type': 'string', 'description': 'Part ID to remove from the proposal'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}}}
Input schema
{'type': 'object', 'required': ['nestIds'], 'properties': {'nestIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Array of inbox item IDs in the desired order'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'position', 'relatedNestId'], 'properties': {'nestId': {'type': 'string', 'description': 'ID of the inbox item to reorder'}, 'position': {'enum': ['before', 'after'], 'type': 'string', 'description': 'Position relative to the reference item'}, 'relatedNestId': {'type': 'string', 'description': 'ID of the reference inbox item to position relative to'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'position', 'relatedNestId'], 'properties': {'nestId': {'type': 'string', 'description': 'ID of the nest to reorder'}, 'position': {'enum': ['before', 'after'], 'type': 'string', 'description': 'Position relative to the reference nest'}, 'relatedNestId': {'type': 'string', 'description': 'ID of the reference nest to position relative to'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'connectionId'], 'properties': {'workspaceId': {'type': 'string', 'description': 'Workspace ID the binding belongs to'}, 'connectionId': {'type': 'string', 'description': 'Binding ID from nestr_list_connections'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'agentUserId', 'nestId'], 'properties': {'nestId': {'type': 'string', 'description': 'The nest the run is pinned to: a role, a project, a task'}, 'message': {'type': 'string', 'description': "What this run is for. Omit for a plain 'advance this item' run."}, 'agentUserId': {'type': 'string', 'description': "The agent's bot user ID"}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID the agent belongs to'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'query'], 'properties': {'page': {'type': 'number', 'description': 'Page number (1-indexed) for fetching additional pages'}, 'sort': {'type': 'string', 'description': "Sort field: title, createdAt, updatedAt, due, activityAt, order. Prefix '-' to reverse. For 'recently active' use '-activityAt' (includes children), not '-updatedAt' (own edits only). Takes precedence over sort:/sort-order: operators in the query."}, 'limit': {'type': 'number', 'description': 'Max results per page. Omit on the first call so meta.total shows the match count.'}, 'query': {'type': 'string', 'description': "Search query with optional operators (e.g., 'label:role', 'assignee:me completed:false')"}, 'strict': {'type': 'boolean', 'description': 'Reject the search when any operator, label or field filter in it was not recognised, rather than silently returning a broader result. Use it whenever you are counting rather than browsing: without it, a mistyped filter comes back as a real and larger answer with nothing to say the filter was dropped.'}, '_listTitle': {'type': 'string', 'description': 'Short title for the list UI header, 2-4 words, e.g. Marketing projects. Say what is shown, not the query.'}, 'linkedUsers': {'type': 'boolean', 'description': 'Resolve every user id in the results to a full user, returned once in `linked.users`. Prefer this over calling nestr_get_user per id.'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID to search in'}, 'stripDescription': {'type': 'boolean', 'description': 'Strip description fields to shrink the response. Use for bulk or index reads.'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'rrule'], 'properties': {'rrule': {'type': ['string', 'null'], 'description': 'RFC-5545 RRULE string to set recurrence, or null to remove it. Required: pass null explicitly rather than omitting the field.'}, 'nestId': {'type': 'string', 'description': 'Nest ID to set or remove recurrence on'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'instant'], 'properties': {'scope': {'enum': ['occurrence', 'following'], 'type': 'string', 'description': "'occurrence' (default) skips this one occurrence and never ends the series. 'following' deletes this occurrence and every later one, keeping the history before it."}, 'nestId': {'type': 'string', 'description': 'The series, or any occurrence of it.'}, 'instant': {'type': ['number', 'string'], 'description': 'Which occurrence: the `instant` value from nestr_list_occurrences, in epoch milliseconds. An ISO-8601 date is accepted only with a Z or an offset, and must be the exact instant the rule produces.'}}}
Input schema
{'type': 'object', 'required': ['user'], 'properties': {'user': {'type': 'string', 'description': 'Who to message: user id, username or email'}, 'title': {'type': 'string', 'description': 'Optional title. Defaults to a dated one, as the app uses.'}}}
Input schema
{'type': 'object', 'required': ['commentId', 'body'], 'properties': {'body': {'type': 'string', 'description': "Updated comment text. Supports HTML and @mentions. Mentions MUST use literal curly braces: `@{userId:roleId}`, NOT `@userId`. Without braces nothing is linked and nobody is notified. Forms: `@{userId:roleId}` (preferred, names the role), `@{userId}`, `@{email}`, `@{circle}` (all fillers in the nearest ancestor circle). The second id MUST be a ROLE or CIRCLE nest, never the project, task or tension you are commenting on: the mention renders that nest's title where the role name belongs, so a project id produces 'Henk as Write a weekly blog post', which reads as though the project were his role. When you do not know which role the person is acting in, use `@{userId}` rather than substituting the nest you happen to be working on."}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': "Optional full set of label IDs for the comment. When provided, this REPLACES the comment's existing labels. To incrementally add or remove a single label without replacing the rest, use nestr_add_label / nestr_remove_label with the commentId as the nestId."}, 'commentId': {'type': 'string', 'description': 'Comment ID to update'}}}
Input schema
{'type': 'object', 'required': ['workspaceId', 'connectorId'], 'properties': {'name': {'type': 'string', 'description': 'Unique connector name within the workspace catalog'}, 'type': {'enum': ['mcp', 'cli', 'api'], 'type': 'string', 'description': 'Transport'}, 'config': {'type': 'object', 'description': 'Per-type transport config, no secret'}, 'enabled': {'type': 'boolean', 'description': 'Switch the connector on or off in this workspace'}, 'exposure': {'type': 'object', 'description': 'Exposure policy: { userAgent, domainGated }'}, 'connectorId': {'type': 'string', 'description': 'ID of the connector to update'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID the connector belongs to'}, 'authStrategy': {'enum': ['secret', 'oauth2'], 'type': 'string', 'description': 'How a principal connects'}, 'capabilities': {'type': 'object', 'description': 'Capability descriptor'}}}
Input schema
{'type': 'object', 'required': ['threadId'], 'properties': {'title': {'type': 'string', 'description': 'New thread title'}, 'users': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The participant list you want, replacing the current one'}, 'threadId': {'type': 'string', 'description': 'Thread id'}, 'completed': {'type': ['boolean', 'null'], 'description': 'true closes the conversation, null reopens it'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'data': {'type': 'object', 'description': 'Custom data storage'}, 'title': {'type': 'string', 'description': 'Updated title (plain text, HTML stripped)'}, 'nestId': {'type': 'string', 'description': 'Inbox item ID'}, 'completed': {'type': 'boolean', 'description': 'Mark as completed (processed)'}, 'description': {'type': 'string', 'description': 'Updated description (supports Markdown and HTML)'}}}
Input schema
{'type': 'object', 'required': ['nestId'], 'properties': {'due': {'type': 'string', 'description': 'Due date (ISO format). For projects/tasks: deadline. For roles: re-election date. For meetings: start time.'}, 'data': {'type': 'object', 'description': "Key-value data store shared with Nestr internals — never overwrite existing keys. Namespace your own data under 'mcp.' (e.g., { 'mcp.lastSync': '...' }). For AI knowledge persistence, use skills instead."}, 'title': {'type': 'string', 'description': 'New title (plain text, HTML tags stripped)'}, 'users': {'type': 'array', 'items': {'type': 'string'}, 'description': 'User IDs to assign'}, 'fields': {'type': 'object', 'description': "Field updates (e.g., { 'project.status': 'Current' })"}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': "Label IDs to set (e.g., ['project'] to convert an item into a project)"}, 'nestId': {'type': 'string', 'description': 'Nest ID to update'}, 'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Domain titles for roles/circles (replaces existing). Requires workspaceId.'}, 'purpose': {'type': 'string', 'description': 'Only for workspaces, circles and roles: a short aspirational statement. Details belong in description, not here. Supports HTML.'}, 'parentId': {'type': 'string', 'description': 'New parent ID (move nest to different location)'}, 'completed': {'type': 'boolean', 'description': "Mark task as completed (root-level field, not in fields). Note: Projects use fields['project.status'] = 'Done' instead."}, 'description': {'type': 'string', 'description': 'The primary content field: details, context, acceptance criteria. Structured data goes in fields, progress in comments. Supports Markdown and HTML.'}, 'workspaceId': {'type': 'string', 'description': 'Workspace ID. Required when updating accountabilities or domains.'}, 'accountabilities': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Accountability titles for roles/circles (replaces existing). Requires workspaceId.'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'instant'], 'properties': {'due': {'type': 'string', 'description': 'Due date (ISO format). For projects/tasks: deadline. For roles: re-election date. For meetings: start time.'}, 'data': {'type': 'object', 'description': "Key-value data store shared with Nestr internals — never overwrite existing keys. Namespace your own data under 'mcp.' (e.g., { 'mcp.lastSync': '...' }). For AI knowledge persistence, use skills instead."}, 'title': {'type': 'string', 'description': 'New title (plain text, HTML tags stripped)'}, 'users': {'type': 'array', 'items': {'type': 'string'}, 'description': 'User IDs to assign'}, 'fields': {'type': 'object', 'description': "Field updates (e.g., { 'project.status': 'Current' })"}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': "Label IDs to set (e.g., ['project'] to convert an item into a project)"}, 'nestId': {'type': 'string', 'description': 'The series, or any occurrence of it.'}, 'instant': {'type': ['number', 'string'], 'description': 'Which occurrence: the `instant` value from nestr_list_occurrences, in epoch milliseconds. An ISO-8601 date is accepted only with a Z or an offset, and must be the exact instant the rule produces.'}, 'purpose': {'type': 'string', 'description': 'Only for workspaces, circles and roles: a short aspirational statement. Details belong in description, not here. Supports HTML.'}, 'parentId': {'type': 'string', 'description': 'New parent ID (move nest to different location)'}, 'completed': {'type': 'boolean', 'description': "Mark task as completed (root-level field, not in fields). Note: Projects use fields['project.status'] = 'Done' instead."}, 'description': {'type': 'string', 'description': 'The primary content field: details, context, acceptance criteria. Structured data goes in fields, progress in comments. Supports Markdown and HTML.'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId'], 'properties': {'needs': {'type': 'string', 'description': 'Updated need that is alive (plain text)'}, 'title': {'type': 'string', 'description': 'Updated title — the gap being sensed (plain text)'}, 'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'feeling': {'type': 'string', 'description': 'Updated feeling this tension evokes (plain text)'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}, 'description': {'type': 'string', 'description': 'Updated description — the observable facts (supports Markdown and HTML)'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId', 'partId', 'childId', 'title'], 'properties': {'title': {'type': 'string', 'description': 'Updated title'}, 'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'partId': {'type': 'string', 'description': 'Part ID'}, 'childId': {'type': 'string', 'description': 'Child ID to update'}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'tensionId', 'status'], 'properties': {'nestId': {'type': 'string', 'description': 'ID of the circle or role the tension belongs to'}, 'status': {'enum': ['proposed', 'draft'], 'type': 'string', 'description': "'proposed' to submit for voting, 'draft' to retract back to draft"}, 'tensionId': {'type': 'string', 'description': 'Tension ID'}}}
Input schema
{'type': 'object', 'required': ['nestId', 'name', 'contentType'], 'properties': {'name': {'type': 'string', 'description': 'File name including extension (e.g. "notes.md", "data.csv")'}, 'nestId': {'type': 'string', 'description': 'Nest or comment ID to attach the file to'}, 'content': {'type': 'string', 'description': 'File content as UTF-8 text (for text-native files: .md, .txt, .csv, .json, .html, .svg, code). Stored verbatim. Provide this OR dataBase64.'}, 'dataBase64': {'type': 'string', 'description': 'File bytes, base64-encoded. Provide this OR content.'}, 'contentType': {'type': 'string', 'description': 'MIME type (e.g. "text/markdown", "text/csv", "image/png")'}}}
Input schema
{'type': 'object', 'required': ['userId'], 'properties': {'limit': {'type': 'number', 'description': 'Max activity items to return (default 50, max 200).'}, 'userId': {'type': 'string', 'description': 'The user whose activity to fetch.'}}}
Input schema
{'type': 'object', 'properties': {'fileId': {'type': 'string', 'description': 'Read one document, from the index or from a search hit.'}, 'offset': {'type': 'number', 'description': "With fileId, continue from a previous nextOffset, or from a search hit's offset."}, 'search': {'type': 'string', 'description': "Find the passages across all the documents that match this. Use words the document would use, not the user's phrasing."}, 'workspaceId': {'type': 'string', 'description': 'Workspace whose documents to read. Omit when you can only reach one.'}}}
Recent tool changes
Similar MCP servers
Stable Baseline
Manages company documents, knowledge graphs, whiteboards, projects, plans, tasks, teams, and improvement workflows.
CollHub
Exposes CollHub documents, projects, comments, workflows, and connected data sources.
mcp
Provides access to company operations such as motions, plans, files, approvals, and shared organizational knowledge.
freedom-mcp
Supports company operations through commitments, teams, agents, customer evidence, leads, content workflows, spreadsheets, commer…
Dayze — Life Context
Provides authenticated personal life-context data and tools for contacts, memories, events, expenses, trips, assets, places, and …
YouSpot
Connects personal contacts, companies, notes, files, CRM records, email, Slack, LinkedIn, and calendars, with search, relationshi…
TaScan
Manages field-service projects, workers, task lists, subtasks, dispatch, geofenced work zones, inspections, remediation workflows…
Tango
Manages shared work between humans and agents through tasks, leases, handoffs, approvals, artifacts, comments, integrations, prog…