remnus
Server Details
MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- Ranork/remnus-app
- GitHub Stars
- 72
- Server Listing
- Remnus
TDQS
Scored across 24 tools
Each tool has a clearly distinct purpose. Bulk and single variants (e.g., bulk_delete_pages vs delete_page) are explicitly labeled and documented, and tools like query_database vs get_database_schema are differentiated by their intent (rows vs schema/views). No two tools appear to do the same thing.
All tool names follow a consistent snake_case verb_noun pattern, such as create_page, update_database_view, and get_changes_since. Prefixes like bulk_ and get_/create_/update_/delete_ are used uniformly, making the API predictable.
At 24 tools, this is on the high end, but the server covers a wide domain: pages, databases, views, comments, search, context, audit, and member management. The bulk/single pairs add some redundancy but serve different batching needs, justifying the count.
The tool surface provides complete lifecycle coverage for pages and databases, including schema/views management, search, related-page discovery, change tracking, and audit logging. Missing operations like comment deletion are explicitly documented as intentional, so there are no dead ends.
Available Tools
24 toolsadd_commentAInspect
Add a comment to a page or database row, in a thread separate from its markdown body — a place to leave running notes or a closure note as you work. Comments you add here cannot be edited or deleted by you afterward (max 4000 characters); use update_page for content you need to revise.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Comment text (max 4000 characters) | |
| kind | No | "closure" highlights this as a wrap-up note for the card | note |
| pageId | Yes | The workspace item ID or database row ID to comment on | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| createdAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly discloses that added comments cannot be edited or deleted afterwardhistorically, an important behavioral caveat not in the schema. It also clarifies that the comment lives in a separate thread from the markdown body. The annotation makes clear this is a write mutation, so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences pack the essential constraints: thread separation, comment purpose, immutability, length limit, and the alternative tool for revisions. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the behavior, the main restriction, and the appropriate alternative tool. Combined with the 100% schema description coverage and annotations, an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines body, kind, pageId, and contextRunId. The description adds useful context that page content should not be placed in the comment, but leaves parameter semantics mostly to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the action adds a comment to a page or database row, clarifying that it creates a thread separate from the markdown body. It also indicates the intended use cases: running notes and closure/complete notes. This leaves no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly identifies when to use an alternative tool: "use update_page for content you need to revise." It also frames the tool as appropriate for running notes or closure notes, making the decision boundary clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_delete_pagesADestructiveInspect
Delete multiple workspace pages, databases, or database rows in one call (max 100). Requires confirm: true to execute — omit or set false to preview what would be deleted. Deletions run concurrently and each entry reports its own ok/error, so one bad id cannot sink the rest of the batch (unlike bulk_update_pages).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to confirm deletion. Without this flag, returns a preview of what would be deleted. | |
| pageIds | Yes | Workspace item IDs or database row IDs to delete | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | Items that would be deleted (preview only) |
| failed | No | Number that failed (confirm: true only) |
| deleted | Yes | Whether items were actually deleted (false for a preview) |
| preview | No | Preview message when confirm was not set |
| results | No | Per-item result (confirm: true only) |
| requested | Yes | Number of ids requested |
| succeeded | No | Number successfully deleted (confirm: true only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is known. The description adds valuable behavioral context beyond the annotations: the confirm-gated execution model, the preview behavior when confirm is false, concurrent execution, and per-entry ok/error reporting. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first states scope and limit, the second explains the confirm gate, the third explains concurrency and error isolation. The most important operational detail (confirm) is front-loaded, and the sibling comparison is placed at the end where it adds differentiation without distracting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core usage, safety gate, concurrency behavior, and error handling. The output schema exists, so return values need not be described. The only minor gap is that it doesn't mention the contextRunId parameter or Strict context requirements, but the schema covers that parameter fully, so the description is complete enough for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds context for confirm (preview vs execute) and pageIds (workspace items or database rows), but these are also partially covered in the schema. The description does not add significant new meaning beyond the schema, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete'), a specific resource ('multiple workspace pages, databases, or database rows'), and a key constraint ('max 100'). It also distinguishes itself from the sibling bulk_update_pages by noting the per-entry error behavior, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use the tool (to delete multiple items in one call) and how to use it safely: confirm: true executes, omitting or false previews. It also names the alternative bulk_update_pages and explains why this tool is preferable for deletions where one bad id should not fail the whole batch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_move_itemsAIdempotentInspect
Move multiple items in one call (max 100). Pass newParentId to reparent workspace items (pages/databases) within the sidebar — same semantics as move_item, batched. Pass targetDatabaseId to move database rows to a DIFFERENT database — refused entirely (no rows moved) if the target database's columns don't cover the source columns by name and type, naming the missing/mismatched columns; never silently drops a property. Exactly one of newParentId or targetDatabaseId must be given.
| Name | Required | Description | Default |
|---|---|---|---|
| itemIds | Yes | IDs to move | |
| newParentId | No | Sidebar mode: new parent item ID, or null for workspace root | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. | |
| targetDatabaseId | No | Cross-database mode: destination database ID for row(s) |
Output Schema
| Name | Required | Description |
|---|---|---|
| failed | Yes | |
| results | Yes | |
| requested | Yes | |
| succeeded | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds valuable behavioral details: the max 100 item limit, the strict refusal (no partial moves) when target columns don't match, and the never-silently-drops-properties guarantee. It also clarifies that newParentId=null means workspace root. These go beyond the structured annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that front-loads the core purpose and limit, then clearly separates the two modes with semicolons and conditional clauses. Every sentence adds necessary information—no filler, no redundancy. The structure makes the mutual exclusivity and refusal behavior easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (two modes, a max limit, a strict refusal condition, and an output schema that is present), the description is remarkably complete. It covers all operational aspects an agent needs to call it correctly: the modes, the constraint, the failure behavior, and the root-parent semantics. Annotations already handle safety, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are documented. The description adds meaningful semantic context: it links newParentId and targetDatabaseId to the two mutually exclusive modes, explains that exactly one must be given, and clarifies that newParentId can be null for workspace root. This supplements the schema's per-field descriptions with cross-parameter relationships and usage constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (move), resource (items), and scope (multiple, max 100). It clearly differentiates from the sibling move_item by being the batched version, and distinguishes the two modes (sidebar reparenting vs cross-database). The purpose is unambiguous and directly tells an agent what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the two modes and the exact constraint that exactly one of newParentId or targetDatabaseId must be given. It references move_item as the single-item counterpart, implying single-item moves should use move_item. It also describes the refusal behavior for incompatible cross-database moves. It doesn't explicitly list when-not-to-use alternatives beyond that, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_update_pagesAIdempotentInspect
Update multiple pages or database rows in one call — same merge semantics as update_page per entry (partial patch, properties merged, title synced). Updates run concurrently and are NOT atomic: if one entry fails the call returns an error, but entries that already succeeded stay applied and the error does not say which ones. Validate ids first for large batches, and re-read before retrying after a failure.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | List of updates to apply | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Per-update results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavioral traits beyond annotations: concurrent execution, non-atomicity, partial success on failure, and the fact that the error doesn't indicate which entries failed. This is exactly the kind of context an agent needs to handle failures correctly. Annotations already indicate idempotentHint=true and destructiveHint=false, and the description does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and information-dense. It front-loads the core function, then explains semantics, then provides actionable warnings. Every sentence earns its place, and the structure flows logically from what → how → caution.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (bulk operation with concurrency and partial failure), the description covers the essential behavioral aspects, parameter semantics, and failure handling. The output schema exists, so return values don't need to be described. The only minor gap is not explicitly stating when to use this vs. update_page, but the name and description make that obvious.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds context about merge semantics (partial patch, properties merged, title synced) which enriches the meaning of the 'updates' parameter, but it doesn't add syntax-level details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: updating multiple pages or database rows in one call, with explicit reference to the same merge semantics as update_page. It distinguishes itself from siblings like update_page (single vs. bulk) and bulk_delete_pages (update vs. delete).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: validate ids first for large batches, re-read before retrying after a failure, and warns about non-atomic behavior. It also references update_page for semantics, giving the agent a clear comparison point. It doesn't explicitly name alternatives, but the sibling list and the reference to update_page make the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_databaseAInspect
Create a new database with a custom schema. A "Title" text column is always prepended if not provided.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Database name | |
| schema | No | Column definitions. Omit to use default schema (Title + Status). | |
| parentId | No | Parent workspace item ID (omit for root) | |
| knowledge | No | Optional OKF-aligned knowledge metadata. Agent-authored knowledge remains draft/machine-confirmed until a Remnus user reviews the exact revision. | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Workspace item ID of the new database |
| databaseId | Yes | Database ID used by query/schema tools |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already communicate that this is a mutating operation (readOnlyHint=false). The description adds a non-obvious behavioral detail beyond that: a 'Title' text column is always prepended if not provided. This is exactly the kind of side effect an agent needs to know before constructing a schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core purpose is front-loaded in the first sentence, and the second sentence adds the one caveat worth surfacing. Everything present earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with nested parameters, the rich input schema and output schema carry much of the detail an agent needs. The description supplies the most surprising runtime behavior (Title prepending), though it leaves selection guidance against create_database_view and update_database_schema to the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the input schema. The description adds value only for the schema parameter via the Title-prepending behavior; it does not enrich the semantics of name, parentId, knowledge, or contextRunId. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create') and resource ('a new database'), and further clarifies that it supports a custom schema. This clearly separates it from siblings like create_database_view and update_database_schema, which concern different operations and resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no alternative tools are named. The phrase 'Create a new database' implies this is for initial creation rather than updating a schema or creating a view, but the agent must infer that distinction from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_database_viewAInspect
Add a new saved view (table, kanban, or calendar) to a database. Kanban groups by a select/status column (auto-picks one if omitted); calendar places cards by a date/datetime column (auto-picks one if omitted). Use get_database_schema first to see column ids/names.
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | Emoji, "lucide:Name", or image URL for the view tab | |
| name | Yes | Name for the new view (e.g. "By Assignee") | |
| type | Yes | View type | |
| dateCol | No | Calendar only: date/datetime column id or name to place cards on. Auto-picks the first date/datetime column if omitted. | |
| iconColor | No | Theme color for a lucide icon | |
| databaseId | Yes | Database ID (from list_workspace or search) | |
| groupByCol | No | Kanban only: select/status column id or name to group by. Auto-picks the first status/select column if omitted. | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | Yes | |
| created | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) by presenting a mutation. It adds some behavioral context, such as auto-picking a select/status column for kanban and a date/datetime column for calendar, but much of this repeats the schema's own property descriptions. It does not disclose failure modes or side effects beyond the annotations already conveying the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. The core action is front-loaded, and the kanban/calendar nuances and prerequisite are packed into the following two sentences without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the schema carries detailed parameter documentation and an output schema is present, the description covers what an agent needs most: the prerequisite schema lookup and the ambiguous auto-pick behavior. It could be slightly more complete with an explicit 'create vs update' routing note, but the sibling names largely cover that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the property descriptions already document groupByCol, dateCol, and type in detail. The description nevertheless adds practical meaning by connecting parameter choice to view behavior and by telling the agent to call get_database_schema to resolve valid column ids/names, which directly helps fill databaseId and the column parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise operation: 'Add a new saved view (table, kanban, or calendar) to a database.' It names the resource, the action, and the supported variants, making it immediately distinguishable from siblings like create_database, create_page, and update_database_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear, actionable precondition: 'Use get_database_schema first to see column ids/names.' It also explains when the optional kanban/calendar columns are needed and how auto-picking behaves. However, it does not explicitly contrast create with update_database_view or state when not to use this tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pageAInspect
Create a new standalone page (use parentId to nest it) or a database row (use databaseId). For rows, properties keys may be column names or ids (matched case-insensitively); title is always mirrored into the row's own title property.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Page title | |
| content | No | Initial markdown content | |
| parentId | No | Parent workspace item ID (for standalone pages) | |
| knowledge | No | Optional OKF-aligned knowledge metadata. Agent-authored knowledge remains draft/machine-confirmed until a Remnus user reviews the exact revision. | |
| databaseId | No | Database ID (creates a database row instead of a page) | |
| properties | No | Initial properties (for database rows) | |
| recurrence | No | Repeat this database row on a schedule. Occurrences are created as real rows. | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | ID of the created page or row |
| type | Yes | What was created (page | db-row) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses useful behaviors beyond the annotations: properties keys can be column names or ids and are matched case-insensitively, and title is always mirrored into the row's own title property. It adds meaningful behavioral nuance without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no filler. The core distinction between page and row creation is front-loaded, and the additional row-specific behavior is introduced in a compact second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has eight parameters and nested objects, but the input schema covers every parameter and an output schema is present. The description adds the key conceptual distinction between pages and rows. It does not mention recurrence or contextRunId, but both are well-documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3, but the description adds cross-parameter semantics by explaining the relationship between parentId/databaseId modes and the properties key-matching behavior. This goes beyond individual parameter descriptions and helps agents construct valid calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('standalone page' or 'database row') and immediately clarifies the two distinct creation modes via parentId and databaseId. This clearly differentiates the tool from create_database and update_page, which operate on different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use this tool: creating a new page or database row, with explicit direction on how to choose between parentId and databaseId. It does not explicitly name alternatives or state when not to use it, but the creation-focused guidance is solid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_database_viewADestructiveInspect
Delete a saved view from a database. Requires confirm: true. A database must always keep at least one view.
| Name | Required | Description | Default |
|---|---|---|---|
| viewId | Yes | View ID (from get_database_schema) | |
| confirm | No | Set to true to confirm deletion. | |
| databaseId | Yes | Database ID (from list_workspace or search) | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds two valuable behaviors: the confirm flag requirement and the invariant that a database must always have at least one view. This goes beyond the annotations and helps the agent understand preconditions and consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise with two sentences that convey all essential information without filler. Critical constraints (confirm flag and keep-one-view rule) are front-loaded, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a complete output schema, annotations declaring destructive behavior, and a well-documented parameter list, the description addresses the key operational constraints (confirm flag, view invariant). It does not describe error conditions or side effects beyond the invariant, but this is reasonable for a destructive operation with clear annotation coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for all four parameters, including their meanings and sources. The description does not add any parameter-specific details beyond the schema, but since the schema is thorough, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Delete') and the resource ('a saved view from a database'), making the tool's purpose unambiguous. It distinguishes itself from sibling tools like create_database_view and update_database_view by focusing only on deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs that 'confirm: true' is required, which is critical for usage. It also implies that the tool should not be used if the database would be left with zero views, providing a situational constraint. It doesn't explicitly name alternatives, but the distinction is implied by the operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pageADestructiveInspect
Delete a workspace page, database, or database row. Requires confirm: true to execute — omit or set false to preview what would be deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The workspace item ID or database row ID to delete | |
| confirm | No | Set to true to confirm deletion. Without this flag, returns a preview of what would be deleted. | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | ID of the deleted item |
| deleted | Yes | Whether the item was actually deleted (false for a preview) |
| preview | No | Preview message when confirm was not set |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds a crucial behavioral layer: the confirm flag converts the operation into a preview without it. This goes beyond the annotations and explains the two-step deletion flow. It does not cover reversibility or permissions, but the preview mechanism is a significant addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and immediately explains the confirm requirement. It is concise with zero fluff, and the preview behavior is stated early, making it easy for an agent to grasp the core semantics quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential behavioral requirement (confirm flag) and the tool's scope, and an output schema exists to detail return values. It does not mention the contextRunId requirement for strict contexts or contrast with bulk_delete_pages, but given the schema covers those and the output schema exists, the description is adequately complete for safe usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with clear descriptions for pageId, confirm, and contextRunId. The description reiterates the confirm behavior but does not add new parameter-level insights beyond what the schema states. The mention of database row ID is already in the schema, so the description adds minimal extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete' and the resource types: workspace page, database, or database row. It also highlights the critical confirm/preview behavior, making it distinct from sibling tools like bulk_delete_pages and delete_database_view. The specificity leaves no ambiguity about what the tool operates on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for single deletions and mentions the preview mechanism, but it does not explicitly contrast with sibling tools like bulk_delete_pages for multiple items or delete_database_view for views. No when-not-to-use guidance is provided, leaving some routing to the agent to infer from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_changes_sinceARead-onlyInspect
Get a compact list of everything that changed in the workspace since a given time or a previous call's cursor — pages/databases edited, database rows edited, and items deleted. Built for recurring agents (daily report, standup, memory refresh) so they can sync incrementally instead of re-reading the whole workspace every run. Omit both since and cursor to bootstrap a full crawl, saving the returned nextCursor (or the latest updatedAt) for the next call.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum changes per page (default 100) | |
| since | No | ISO 8601 timestamp — only return changes after this time (e.g. "2026-07-01T00:00:00Z"). Ignored when cursor is provided. Omit both for a full crawl. | |
| cursor | No | Pagination cursor from a previous response's nextCursor field — takes priority over since for resuming a sync |
Output Schema
| Name | Required | Description |
|---|---|---|
| changes | Yes | Chronological, oldest first |
| hasMore | Yes | |
| nextCursor | No | Pass back as cursor to continue or resume a later sync |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by detailing what the tool returns (pages/databases edited, database rows edited, items deleted) and explaining cursor behavior. It provides sufficient behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. Two sentences efficiently convey the tool's functionality and usage pattern, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not shown) and is relatively simple with only three optional parameters, the description is complete. It covers the primary use case, parameter relationships, and initialization flow, meeting the agent's needs for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides full descriptions for all three parameters, but the description adds critical semantic context: the priority of cursor over since, the effect of omitting both for a full crawl, and the mention of return fields (nextCursor, updatedAt). This significantly enhances the agent's understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retrieving a compact list of workspace changes since a given time or cursor. It specifies the resource (workspace changes) and action (get), and differentiates from siblings by emphasizing incremental syncing, which is unique among the listed tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states it is built for recurring agents to sync incrementally and explains when to use the `since` vs `cursor` parameters, including bootstrapping a full crawl. However, it does not explicitly mention when not to use the tool, such as for ad-hoc queries where other tools like query_database or search_workspace might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_database_schemaARead-onlyInspect
Get the column schema and saved views of a database, without fetching any rows. Use this to inspect column names/types/options before querying, or view ids/configs before calling create_database_view / update_database_view / delete_database_view.
| Name | Required | Description | Default |
|---|---|---|---|
| databaseId | Yes | Database ID (from list_workspace or search) |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| views | Yes | Saved views — always at least one |
| schema | Yes | Column definitions (id, name, type, options) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds specific behavioral context beyond annotations (readOnlyHint=true): 'without fetching any rows' and details on what is inspected. No contradictions. Minor room for further details on constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first states function, second gives use cases. Front-loaded, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity, single parameter, and output schema exists, the description fully covers purpose, usage, and behavioral aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter 'databaseId' is fully described in schema (100% coverage). Description does not add further semantics beyond the tool's purpose, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves column schema and saved views, explicitly noting it does not fetch rows. Distinguishes from querying databases and from view manipulation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: before querying to inspect columns, and before calling view-related tools to get ids/configs. Mentions sibling tools contextually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageARead-onlyInspect
Get content of a workspace page or database row by its ID. Auto-detects the type — no flags needed. Pass mode: "outline" for a token-cheap skim (headings + first line of each section) before deciding whether to fetch the full content.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "full" (default) returns the whole markdown body; "outline" returns only headings + the first line of each section — use it to skim long pages cheaply, then re-fetch with "full" if needed | full |
| pageId | Yes | The workspace item ID or database row ID | |
| includeComments | No | Include the page's comment thread (default false, so ordinary reads stay cheap) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| icon | No | |
| mode | No | "outline" when collapsed |
| type | Yes | page | database |
| title | No | |
| content | No | Markdown body (collapsed in outline mode) |
| comments | No | Present only when includeComments is true |
| databaseId | No | |
| properties | No | Database-row properties (rows only) |
| recurrence | No | Present when this row is one occurrence of a repeating series: seriesId, occurrenceDate, detached, rule, occurrences |
| fullContentChars | No | Full body size in chars (outline mode) — gauge whether a "full" fetch is worth it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readonly annotation, it discloses auto-detection of page vs row, and the token-cheap skim behavior of outline mode. It does not document edge cases or failure behavior, but covers the key runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficient, front-loaded purpose, then behavioral guidance. Every sentence adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a complete output schema and 100% parameter coverage, the description fills the remaining gap by explaining auto-detection and when to use outline mode. No missing context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameters with descriptions throughout, so the main description adds little parameter meaning. The outline-vs-full guidance is repeated from schema, but the schema itself is descriptive enough. Slight redundancy to schema, hence not 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get content of a workspace page or database row by its ID'. It also notes auto-detection, which differentiates it from siblings like get_pages (plural) and search_workspace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on when to use the 'outline' mode ('before deciding whether to fetch the full content') vs full mode dependencies. Does not compare against sibling tools like get_pages or search_workspace, but the purpose is self-contained enough for an agent to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pagesARead-onlyInspect
Get multiple workspace pages or database rows by ID in one call — for a specific, already-known, possibly mixed list of IDs (e.g. from search_workspace, get_related_pages, or get_changes_since). One missing/inaccessible ID does not fail the batch — check each entry's "ok" field. For many rows that share one database, prefer query_database with filters/fields instead of this — it is one query, not N lookups.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Same as get_page — "outline" collapses each body to headings + first line per section | full |
| pageIds | Yes | Page/row IDs to fetch (max 50) |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses partial-failure behavior: one missing/inaccessible ID does not fail the batch, and the consumer should check each entry's 'ok' field. This adds substantial value beyond the readOnlyHint annotation, because it tells the agent how to interpret results and handle errors when using the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each with a distinct purpose: what the tool does, error behavior, and routing to an alternative. There is no fluff, it is front-loaded, and the alternative guidance is placed after the core behavior but remains easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that annotations declare read-only and open-world hints, and an output schema exists (so return format is documented elsewhere), the description still supplies the remaining critical knowledge: ID list nature, batch failure handling, and when to route to query_database. An agent has enough information to decide when to call and how to code the result handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers the parameters with 100% description coverage, describing both pageIds and mode. The description adds the nuance that the ID list can be mixed pages and database rows, but this is largely already present in the schema via 'Page/row IDs'. Thus the description provides minor extra context but not critical semantic clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Get multiple workspace pages or database rows by ID in one call'. It also specifies the target scenario (for a specific, already-known list of IDs), and names exact sources (search_workspace, get_related_pages, get_changes_since), which distinguishes it from siblings like get_page and query_database.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool (for a specific, already-known list of IDs) and when not to (for many rows sharing one database, prefer query_database with filters/fields). This gives the agent clear decision criteria, including the rationale that query_database is 'one query, not N lookups'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_membersARead-onlyInspect
List all members of the workspace with their roles and join dates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| members | Yes | Oldest first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and openWorldHint=false. Description adds 'roles and join dates' but this is likely covered by the output schema. It does not disclose additional behavioral traits like pagination or size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action and key details. Every word is useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and presence of output schema, description adequately covers purpose and output content. It is complete for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema description coverage is 100% (empty). Baseline 3 applies as description adds no parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'List' and resource 'members', clearly indicating output includes roles and join dates. This distinguishes it from sibling tools like list_workspace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. However, there are no directly competing siblings for listing members, so the need is lower. Still, it lacks any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspaceARead-onlyInspect
List workspace items (pages and databases). Optionally filter by parent. Supports cursor-based pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum items per page (default 100) | |
| cursor | No | Pagination cursor from a previous response's nextCursor field | |
| parentId | No | Parent item ID (omit for root items) |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| hasMore | Yes | |
| nextCursor | No | Pass back as cursor to continue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, indicating safe read. Description adds pagination behavior and optional parent filter, which are not in annotations. No contradictions; adds useful context beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose and key features (pagination, optional filter). Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists (no need to describe return format) and all parameters are documented, the description covers what tool does, its filtering, and pagination. Sibling tools are many but description is self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for each parameter. Description adds minimal value: 'optionally filter by parent' reinforces parentId, and 'Supports cursor-based pagination' provides context. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List workspace items (pages and databases)', with a specific verb and resource. It distinguishes from sibling tools like get_page or search_workspace by scope (all items vs single/search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage: use to list workspace items. No explicit when-not-to-use or alternative tools mentioned, though sibling names provide context. Lacks guidance on differentiating from query_database or search_workspace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_itemAIdempotentInspect
Move a sidebar item (page or database) to a new parent within the workspace. Pass null to move to workspace root.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | The workspace item ID to move | |
| newParentId | No | New parent item ID. Pass null or omit to move to workspace root. | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| moved | Yes | Whether the item was moved |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=true, covering mutation and idempotency. The description adds the null behavior but does not disclose potential side effects like child item handling or permission requirements. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the primary action front-loaded. The null behavior is stated clearly, and there is no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-item move operation with an output schema, the description covers the key usage (null root) and annotations cover the safety profile. It does not mention contextRunId, but the schema handles that, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description repeats the null guidance already present in the newParentId schema, adding no new semantic meaning beyond what is structurally available.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'move' with a specific resource (sidebar item) and destination (new parent), and distinguishes it from bulk_move_items by implying single-item scope. It also explains the null-to-root behavior, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a usage note for passing null to move to root, but does not mention when to use this tool versus bulk_move_items or any preconditions. The intended use for single items is implied but not explicitly contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_contextARead-onlyInspect
Build one task-specific, token-budgeted context pack from relevant workspace pages. Ranks lexical matches, prefers human-reviewed OKF knowledge, penalizes stale/deprecated concepts, and adds the top result's link-graph neighbors. Use this before multi-page product or coding work instead of many search/get_page calls.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | The concrete task or question to gather context for | |
| maxTokens | No | Approximate maximum tokens in the returned JSON | |
| maxConcepts | No | Maximum page concepts to include | |
| trustPolicy | No | prefer-human-reviewed | |
| includeRelated | No | Include title/id references from the top concept's graph neighborhood |
Output Schema
| Name | Required | Description |
|---|---|---|
| task | Yes | |
| policy | Yes | |
| profile | Yes | |
| related | Yes | |
| concepts | Yes | |
| handling | Yes | |
| warnings | Yes | |
| expiresAt | No | |
| retrieval | Yes | |
| truncated | Yes | |
| budgetTokens | Yes | |
| contextRunId | No | |
| estimatedTokens | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and openWorldHint=false, but the description adds valuable behavioral context: it ranks lexical matches, prefers human-reviewed OKF knowledge, penalizes stale/deprecated concepts, and adds link-graph neighbors. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The main action is front-loaded ('Build one task-specific, token-budgeted context pack'), followed by concise behavioral details and a usage directive. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with 5 parameters and an output schema. The description explains the core behavior (ranking, preference, link-graph) and usage context, which is sufficient for an agent to decide when to call it. Output structure is left to the schema, which is acceptable. Minor gap: doesn't describe the exact format of the returned context pack, but that's covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80% (4 of 5 params described), so baseline is 3. The description mentions 'prefers human-reviewed OKF knowledge' which hints at trustPolicy, but it doesn't elaborate on parameter syntax or usage beyond what the schema already specifies. No significant additional meaning is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Build' with a resource 'task-specific, token-budgeted context pack from relevant workspace pages' and details the ranking/preference behavior. It clearly distinguishes itself from siblings like search_workspace or get_pages by focusing on aggregating context rather than returning raw pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this before multi-page product or coding work instead of many search/get_page calls', giving a clear when-to-use and naming the alternative pattern it replaces. Lacks an explicit when-not-to-use but the 'instead of many' implies it's not for single-page lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_audit_logARead-onlyInspect
Query the MCP agent activity audit log for this workspace. Supports filtering by tool name, status, and date range.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of date range (ISO 8601, e.g. "2025-12-31T23:59:59Z") | |
| from | No | Start of date range (ISO 8601, e.g. "2025-01-01T00:00:00Z") | |
| tool | No | Filter by tool name (e.g. "create_page", "query_database") | |
| limit | No | Maximum results (default 50) | |
| status | No | Filter by call status |
Output Schema
| Name | Required | Description |
|---|---|---|
| entries | Yes | Newest first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds that it supports filtering but does not disclose further behavioral traits such as pagination, rate limits, or what happens when no results are found. With annotations covering the safety profile, the description provides moderate additional value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the core action and immediately lists filter capabilities. Every word adds value; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return value explanation is not required. However, the description omits details like log retention period, ordering defaults, or maximum date range. For a tool with 5 optional parameters and no required fields, additional context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with all 5 parameters already described in the input schema. The description adds a summary of filter categories (tool name, status, date range) but does not provide meaning beyond what the schema already offers. Baseline 3 is appropriate given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries the MCP agent activity audit log for this workspace, specifying filtering by tool name, status, and date range. This is a specific verb+resource combination that distinguishes it from sibling tools like query_database or search_workspace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Sibling tools include get_changes_since and query_database, which could be confused without explicit differentiation. The description does not mention when not to use it or list alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_databaseARead-onlyInspect
Get schema and rows of a database. Row markdown bodies are NOT included by default — add "content" to fields when you need them, or get_page a single row. Optionally filter rows by property values, and project with fields to fetch only the columns you need (much cheaper on wide tables). Supports cursor-based pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows per page (default 50) | |
| cursor | No | Pagination cursor from a previous response's nextCursor field | |
| fields | No | Only return these columns (match by column id or name, case-insensitive); row title is always included. Add "content" to include row markdown bodies (omitted by default). Omit fields for all columns without bodies. | |
| filters | No | Filter rows by property value, e.g. {"status": "Done"} or {"col_xxx": ["Tag1"]} | |
| databaseId | Yes | Database ID (from list_workspace or search) |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | Rows carry `recurring: true` when they belong to a repeating series — call get_page for the rule before changing its rhythm |
| schema | No | Column schema (trimmed when projecting with fields) |
| hasMore | No | |
| nextCursor | No | Pass back as cursor to continue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds valuable behavioral context: row markdown bodies are omitted by default, fields projection affects cost, and pagination is cursor-based. It doesn't describe the exact response format, but the output schema exists and covers that. The description adds meaningful behavioral detail beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. It front-loads the core purpose, then immediately covers the most important behavioral caveat (bodies not included), then provides optimization guidance and pagination info. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with a rich output schema and 100% parameter coverage, the description is complete. It covers the key caveat (bodies omitted), the optimization strategy (fields projection), the pagination mechanism, and the alternative for single rows. An agent has everything it needs to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds some context about the 'fields' parameter (add 'content' for bodies, cheaper on wide tables) and mentions cursor-based pagination, but it doesn't add significant new meaning beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get schema and rows of a database.' It distinguishes itself from siblings by explicitly noting that row markdown bodies are not included by default and pointing to get_page for a single row. This makes it easy for an agent to understand what this tool does and how it differs from related tools like get_database_schema or get_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool and when to use alternatives: 'add "content" to fields when you need them, or get_page a single row.' It also explains the benefit of projecting with fields ('much cheaper on wide tables') and mentions cursor-based pagination. This is clear, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_workspaceARead-onlyInspect
Search the workspace by title and content. Matches standalone pages, databases, and database rows (each row is a page) on their title or body text. Use it to locate an item before reading or updating it.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results (default 10) | |
| query | Yes | Text to match against item titles and content (case-insensitive substring) |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Matching items |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so no contradiction. Description adds value by detailing search scope (standalone pages, databases, rows) and matching behavior (title/content, case-insensitive substring), which is beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that convey purpose, scope, and usage without unnecessary words. Highly concise and front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations and output schema, the description covers core behavior and usage. Could mention pagination or result fields, but output schema fills that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions. The description does not add new details about parameters beyond what the schema provides, meeting baseline expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches workspace by title and content, specifies matching targets (pages, databases, rows), and gives a use case. This distinguishes it from siblings like list_workspace or query_database.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit context: 'Use it to locate an item before reading or updating it.' However, it does not specify when not to use it or name alternative tools explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_database_schemaADestructiveInspect
Add or remove columns from a database schema. Removing columns is destructive (data loss) and requires confirm: true. The title column cannot be removed.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Required when removing columns. Set to true to confirm the destructive operation. | |
| addColumns | No | Columns to add | |
| databaseId | Yes | Database ID (from list_workspace or search) | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. | |
| removeColumnIds | No | Column IDs to remove (use get_database_schema to find IDs). Cannot remove the title column. |
Output Schema
| Name | Required | Description |
|---|---|---|
| schema | Yes | The new column schema after the change |
| updated | Yes | Whether the schema was updated |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds valuable behavioral details beyond annotations: the requirement for confirm: true during removal, the data-loss warning, and the title column restriction. This helps the agent understand side effects and necessary confirmations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences that front-load the purpose and immediately cover the critical destructive behavior and constraints. No wasted words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a schema-modification tool, the description covers the essential aspects: purpose, destructive nature, confirm requirement, and a specific restriction. The output schema is present, so return values are presumably documented there. It could mention idempotency or the need for a contextRunId in strict mode, but those are secondary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds minimal extra semantics—it restates the add/remove purpose and mentions the confirm requirement, but doesn't provide syntax or format details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Add or remove columns from a database schema.' This is specific, uses a clear verb and resource, and distinguishes it from sibling tools like create_database or update_database_view. The destructive nature is also highlighted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (adding/removing columns) and includes important constraints like 'requires confirm: true' for removal and 'The title column cannot be removed.' However, it does not explicitly mention alternatives or when not to use this tool, though the specific scope makes it fairly clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_database_viewAIdempotentInspect
Rename a database view, change its icon, or patch fields within its existing config (filters, sorts, groupByCol, dateCol, cardProperties, etc — merged into the current config). The view's type (table/kanban/calendar) cannot be changed; create a new view instead. Use get_database_schema to find view ids and current config shape.
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | Emoji, "lucide:Name", or image URL | |
| name | No | New view name | |
| config | No | Partial config fields to merge in, e.g. { "groupByCol": "col_abc123" } or { "filters": [...] } | |
| viewId | Yes | View ID (from get_database_schema) | |
| iconColor | No | Theme color for a lucide icon | |
| databaseId | Yes | Database ID (from list_workspace or search) | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | Yes | |
| updated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds valuable behavioral context: config fields are merged into the existing config (not replaced), and the view type is immutable. This goes beyond what annotations provide, though it doesn't detail side effects like whether renaming affects references.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler. The core action and merge behavior are front-loaded, the immutability constraint is stated clearly, and the pointer to get_database_schema is a useful final note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a mutation tool with an output schema and full parameter documentation. It covers the key behavioral nuance (merge vs replace), the immutability constraint, and how to find required IDs. It doesn't mention potential errors or permission requirements, but given the annotations and schema coverage, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds meaning by explaining the merge semantics for config and explicitly listing example fields (filters, sorts, groupByCol, dateCol, cardProperties). It also clarifies that icon can be an emoji, lucide:Name, or image URL, which is useful beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Rename', 'change', 'patch') and resource ('database view'), and explicitly distinguishes itself from creating a new view when the type needs to change. It also names the sibling tool get_database_schema for finding view IDs, which helps an agent understand exactly what this tool operates on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool (rename, change icon, patch config fields) and when not to use it (cannot change view type; create a new view instead). It also points to get_database_schema for finding view IDs and current config shape, which is clear guidance for the correct invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pageAIdempotentInspect
Update a page or database row. Only the fields you pass are changed — omit a field to leave it untouched. For rows, properties are merged into the existing values (not replaced), and title also updates the row's title property so the change shows up in table views.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title | |
| pageId | Yes | The workspace item ID or database row ID to update | |
| content | No | New markdown content | |
| knowledge | No | Optional OKF-aligned knowledge metadata. Agent-authored knowledge remains draft/machine-confirmed until a Remnus user reviews the exact revision. | |
| properties | No | Properties to merge (for database rows) | |
| recurrence | No | Repeat this database row on a schedule. Occurrences are created as real rows. | |
| contextRunId | No | prepare_context contextRunId. Required for mutations when the workspace uses Strict context. | |
| recurrenceScope | No | Required when the row ALREADY repeats: "thisAndFollowing" leaves earlier cards untouched, "all" re-rhythms the whole series. Ask the user rather than guessing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | ID of the updated page or row |
| updated | Yes | Whether the update was applied |
| recurrenceError | No | Set when the rhythm change was refused — the row update itself still applied |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds valuable behavioral context beyond annotations: partial update semantics ('only fields you pass are changed'), merge behavior for properties, and the side effect that title also updates the row's title property. It also discloses that recurrence creates real rows and that contextRunId is required for mutations in Strict context. This is strong behavioral disclosure that goes beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and the most important behavioral rule (partial updates). The second sentence adds essential merge semantics. It is concise and every sentence earns its place. Slightly more could be said about when not to use it, but the structure is efficient and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 params, nested objects, output schema present), the description covers the critical behavioral aspects: partial updates, merge semantics, title side effect, recurrence row creation, and Strict context requirement. The output schema exists so return values need not be described. The only gap is not explicitly routing to bulk_update_pages for batch scenarios, but the description is complete enough for an agent to call this tool correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds meaning beyond the schema by explaining the merge semantics for properties and the title side effect, which are not evident from the schema alone. It also clarifies the recurrence behavior ('Occurrences are created as real rows') and the contextRunId requirement. This exceeds the baseline 3 for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a page or database row, and explicitly distinguishes the two target types. It also names the sibling tool it is not (create_page) implicitly by focusing on update semantics, and the title 'Update page' aligns with the description. The verb 'update' plus resource 'page or database row' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool (to update a page or database row) and provides key usage context: partial updates, merge semantics for rows, and title behavior. It does not explicitly name alternatives like bulk_update_pages or create_page, but the context signals and sibling list make the distinction inferable. The description could be stronger by explicitly saying 'for bulk updates use bulk_update_pages' but the core usage guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
- Added
add_comment - Added
bulk_delete_pages - Added
bulk_move_items - Changed
bulk_update_pages1 field changed- added
Input schema / properties / contextRunIdAdded value: +{ + "description": "prepare_context contextRunId. Required for mutations when the workspace uses Strict context.", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +}
- Changed
create_database2 fields changed- added
Input schema / properties / contextRunIdAdded value: +{ + "description": "prepare_context contextRunId. Required for mutations when the workspace uses Strict context.", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +} - added
Input schema / properties / knowledgeAdded value: +{ + "description": "Optional OKF-aligned knowledge metadata. Agent-authored knowledge remains draft/machine-confirmed until a Remnus user reviews the exact revision.", + "properties": { + "conceptType": { + "maxLength": 120, + "type": "string" + }, + "description": { + "maxLength": 1000, + "type": "string" + }, + "sources": { + "items": { + "properties": { + "resource": { + "maxLength": 2000, + "type": "string" + }, + "title": { + "maxLength": 300, + "type": "string" + } + }, + "required": [ + "resource" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "staleAfter": { + "maxLength": 40, + "type": "string" + }, + "status": { + "enum": [ + "draft", + "stable", + "deprecated" + ], + "type": "string" + }, + "tags": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 30, + "type": "array" + } + }, + "type": "object" +}
- Changed
create_database_view1 field changed- added
Input schema / properties / contextRunIdAdded value: +{ + "description": "prepare_context contextRunId. Required for mutations when the workspace uses Strict context.", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +}
- Changed
create_page3 fields changed- added
Input schema / properties / contextRunIdAdded value: +{ + "description": "prepare_context contextRunId. Required for mutations when the workspace uses Strict context.", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +} - added
Input schema / properties / knowledgeAdded value: +{ + "description": "Optional OKF-aligned knowledge metadata. Agent-authored knowledge remains draft/machine-confirmed until a Remnus user reviews the exact revision.", + "properties": { + "conceptType": { + "maxLength": 120, + "type": "string" + }, + "description": { + "maxLength": 1000, + "type": "string" + }, + "sources": { + "items": { + "properties": { + "resource": { + "maxLength": 2000, + "type": "string" + }, + "title": { + "maxLength": 300, + "type": "string" + } + }, + "required": [ + "resource" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "staleAfter": { + "maxLength": 40, + "type": "string" + }, + "status": { + "enum": [ + "draft", + "stable", + "deprecated" + ], + "type": "string" + }, + "tags": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 30, + "type": "array" + } + }, + "type": "object" +} - added
Input schema / properties / recurrenceAdded value: +{ + "description": "Repeat this database row on a schedule. Occurrences are created as real rows.", + "properties": { + "byMonthDay": { + "maximum": 31, + "minimum": 1, + "type": "integer" + }, + "bySetPos": { + "anyOf": [ + { + "const": -1, + "type": "number" + }, + { + "const": 1, + "type": "number" + }, + { + "const": 2, + "type": "number" + }, + { + "const": 3, + "type": "number" + }, + { + "const": 4, + "type": "number" + } + ], + "description": "-1 = last" + }, + "byWeekday": { + "items": { + "enum": [ + "MO", + "TU", + "WE", + "TH", + "FR", + "SA", + "SU" + ], + "type": "string" + }, + "type": "array" + }, + "count": { + "maximum": 500, + "minimum": 1, + "type": "integer" + }, + "dateColumn": { + "description": "Column id or name; defaults to the first date column", + "type": "string" + }, + "freq": { + "enum": [ + "daily", + "weekly", + "monthly", + "yearly" + ], + "type": "string" + }, + "interval": { + "description": "1 = every, 2 = every other", + "maximum": 99, + "minimum": 1, + "type": "integer" + }, + "monthlyMode": { + "enum": [ + "dayOfMonth", + "nthWeekday", + "lastDay" + ], + "type": "string" + }, + "until": { + "description": "YYYY-MM-DD, inclusive", + "type": "string" + } + }, + "required": [ + "freq" + ], + "type": "object" +}
- Changed
delete_database_view1 field changed- added
Input schema / properties / contextRunIdAdded value: +{ + "description": "prepare_context contextRunId. Required for mutations when the workspace uses Strict context.", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +}
- Changed
delete_page1 field changed- added
Input schema / properties / contextRunIdAdded value: +{ + "description": "prepare_context contextRunId. Required for mutations when the workspace uses Strict context.", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +}
- Changed
get_page3 fields changed- added
Input schema / properties / includeCommentsAdded value: +{ + "default": false, + "description": "Include the page's comment thread (default false, so ordinary reads stay cheap)", + "type": "boolean" +} - added
Output schema / properties / commentsAdded value: +{ + "description": "Present only when includeComments is true", + "items": { + "additionalProperties": false, + "properties": { + "authorKind": { + "description": "human | agent", + "type": "string" + }, + "authorLabel": { + "type": "string" + }, + "body": { + "type": "string" + }, + "createdAt": {}, + "id": { + "type": "string" + }, + "kind": { + "description": "note | closure", + "type": "string" + } + }, + "required": [ + "id", + "body", + "kind", + "authorKind", + "authorLabel", + "createdAt" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / recurrenceAdded value: +{ + "description": "Present when this row is one occurrence of a repeating series: seriesId, occurrenceDate, detached, rule, occurrences" +}
- Added
get_pages - Changed
move_item1 field changed- added
Input schema / properties / contextRunIdAdded value: +{ + "description": "prepare_context contextRunId. Required for mutations when the workspace uses Strict context.", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +}
- Added
prepare_context - Changed
query_database1 field changed- added
Output schema / properties / rows / descriptionAdded value: +"Rows carry `recurring: true` when they belong to a repeating series — call get_page for the rule before changing its rhythm"
- Changed
update_database_schema1 field changed- added
Input schema / properties / contextRunIdAdded value: +{ + "description": "prepare_context contextRunId. Required for mutations when the workspace uses Strict context.", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +}
- Changed
update_database_view1 field changed- added
Input schema / properties / contextRunIdAdded value: +{ + "description": "prepare_context contextRunId. Required for mutations when the workspace uses Strict context.", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +}
- Changed
update_page5 fields changed- added
Input schema / properties / contextRunIdAdded value: +{ + "description": "prepare_context contextRunId. Required for mutations when the workspace uses Strict context.", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +} - added
Input schema / properties / knowledgeAdded value: +{ + "description": "Optional OKF-aligned knowledge metadata. Agent-authored knowledge remains draft/machine-confirmed until a Remnus user reviews the exact revision.", + "properties": { + "conceptType": { + "maxLength": 120, + "type": "string" + }, + "description": { + "maxLength": 1000, + "type": "string" + }, + "sources": { + "items": { + "properties": { + "resource": { + "maxLength": 2000, + "type": "string" + }, + "title": { + "maxLength": 300, + "type": "string" + } + }, + "required": [ + "resource" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "staleAfter": { + "maxLength": 40, + "type": "string" + }, + "status": { + "enum": [ + "draft", + "stable", + "deprecated" + ], + "type": "string" + }, + "tags": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 30, + "type": "array" + } + }, + "type": "object" +} - added
Input schema / properties / recurrenceAdded value: +{ + "description": "Repeat this database row on a schedule. Occurrences are created as real rows.", + "properties": { + "byMonthDay": { + "maximum": 31, + "minimum": 1, + "type": "integer" + }, + "bySetPos": { + "anyOf": [ + { + "const": -1, + "type": "number" + }, + { + "const": 1, + "type": "number" + }, + { + "const": 2, + "type": "number" + }, + { + "const": 3, + "type": "number" + }, + { + "const": 4, + "type": "number" + } + ], + "description": "-1 = last" + }, + "byWeekday": { + "items": { + "enum": [ + "MO", + "TU", + "WE", + "TH", + "FR", + "SA", + "SU" + ], + "type": "string" + }, + "type": "array" + }, + "count": { + "maximum": 500, + "minimum": 1, + "type": "integer" + }, + "dateColumn": { + "description": "Column id or name; defaults to the first date column", + "type": "string" + }, + "freq": { + "enum": [ + "daily", + "weekly", + "monthly", + "yearly" + ], + "type": "string" + }, + "interval": { + "description": "1 = every, 2 = every other", + "maximum": 99, + "minimum": 1, + "type": "integer" + }, + "monthlyMode": { + "enum": [ + "dayOfMonth", + "nthWeekday", + "lastDay" + ], + "type": "string" + }, + "until": { + "description": "YYYY-MM-DD, inclusive", + "type": "string" + } + }, + "required": [ + "freq" + ], + "type": "object" +} - added
Input schema / properties / recurrenceScopeAdded value: +{ + "description": "Required when the row ALREADY repeats: \"thisAndFollowing\" leaves earlier cards untouched, \"all\" re-rhythms the whole series. Ask the user rather than guessing.", + "enum": [ + "thisAndFollowing", + "all" + ], + "type": "string" +} - added
Output schema / properties / recurrenceErrorAdded value: +{ + "description": "Set when the rhythm change was refused — the row update itself still applied", + "type": "string" +}
Related MCP Connectors
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
MCP-native collaborative markdown editor with real-time AI document editing
- FlowdexOAuthdk.flowdex
Read and write your team's shared, AI-readable wiki from any MCP client.
Related MCP Servers
- AlicenseAqualityBmaintenanceFull-featured Notion MCP server enabling deep page reading, block editing, snapshot/restore, file uploads, table manipulation, page restore, and destructive page copying.33MIT
- AlicenseNot gradedqualityDmaintenanceComprehensive MCP server for the Notion API. Provides 22 tools for full CRUD operations on pages, databases, blocks, users, and comments.10 npmMIT
- AlicenseNot gradedqualityDmaintenanceMCP server for the Notion API, enabling management of pages, blocks, databases, data sources, comments, and users through natural language.4 npm3MIT
- AlicenseBqualityBmaintenanceA lightweight MCP server for Notion that enables natural language management of pages, databases, and blocks through the current Notion API.12MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.