Skip to main content
Glama

Server Details

MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.

Ownership verified
Status
Healthy
Uptime
67.1% over 49 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Ranork/remnus-app
GitHub Stars
73
Server Listing
Remnus

TDQS

A4.2/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a clearly distinct resource or action: pages, databases, changes, related pages, members, audit log, search, and context preparation. Overlapping tools like get_pages and query_database are explicitly differentiated in their descriptions, with guidance on which to use.

Naming Consistency5/5

All tool names follow a consistent lowercase snake_case verb_noun pattern: get_*, list_*, query_*, search_*, prepare_*. The one outlier, get_changes_since, still follows the verb-first convention and is clear in meaning.

Tool Count5/5

With 11 tools, the server is well-scoped for a workspace knowledge and context-reading domain. Each tool has a distinct purpose and none feel redundant or extraneous.

Completeness4/5

The read-centric surface is thorough: single/multiple reads, database queries, schema, search, listing, changes, related pages, members, audit log, and context assembly. However, the descriptions reference a 'workspace digest/map' that isn't exposed as a tool here, leaving a minor gap for orientation that list_workspace only partially fills.

Available Tools

11 tools
get_changes_sinceA
Read-only
Inspect

Everything created, updated or deleted since a cursor (from the workspace digest/map or a previous call) or an ISO time — pages, databases, rows and deletions, oldest first. Omit both to bootstrap. Always keep nextCursor for the next call: this is how to catch up instead of re-reading the tree. An entry stamped in the cursor's own second may appear once more — dedupe by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNoISO 8601; ignored when cursor is given
cursorNoFrom the digest/map header or a previous nextCursor

Output Schema

ParametersJSON Schema
NameRequiredDescription
changesYesChronological, oldest first
hasMoreYes
nextCursorYesAlways present — pass back as cursor to continue or resume a later sync

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only annotation, the description discloses important behavior: returned changes include deletions, results are oldest-first, the cursor must be persisted, and an entry in the cursor's own second may reappear, requiring deduplication by id. This is valuable operational context not otherwise visible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences carry the full story: what it returns, how to use it correctly, and the one caveat to handle. There is no filler or repetition of schema text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and the annotations cover safety, the description supplies all essential procedural details: cursor chaining, bootstrapping, scope, ordering, and deduplication. An agent can call and paginate this tool correctly from the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents since and cursor, and the description adds useful context about cursor provenance (digest/map header or previous nextCursor) and bootstrap semantics. The limit parameter remains undocumented in the description, but its default and self-explanatory name reduce the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Everything created, updated or deleted since a cursor... or an ISO time,' and enumerates the covered item types (pages, databases, rows, deletions) and ordering (oldest first). This clearly distinguishes it from sibling read tools like get_page or get_pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage direction: omit both parameters to bootstrap, always retain nextCursor for the next call, and use this tool to catch up 'instead of re-reading the tree.' This tells the agent exactly when and how to invoke it iteratively.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_database_schemaA
Read-only
Inspect

Columns (id, name, type, options) and saved views of a database, without rows. Check it before writing rows or changing views.

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
viewsYesSaved views — always at least one
schemaYesColumn definitions (id, name, type, options)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds concrete return-content boundaries (no rows) and a recommended precondition that goes beyond the readOnlyHint. It is consistent with the readOnlyHint and openWorldHint false, and no contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with dense, front-loaded content: return contents first, then the use trigger. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only tool with an output schema and readOnlyHint, the description supplies the key boundary (schema vs rows) and the intended call timing. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is no parameter explanation in the description, and schema coverage is 0%, so the description was expected to compensate. The single databaseId is self-explanatory from its name, but the description adds no format, origin, or usage detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('a database') and a specific verb ('get'), enumerates the exact contents (columns id/name/type/options and saved views), and explicitly excludes rows. This lets an agent distinguish it from row-returning siblings like query_database.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a clear trigger: 'Check it before writing rows or changing views.' It does not explicitly name sibling alternatives or state when not to use it, but the 'without rows' caveat implies row queries belong elsewhere.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pageA
Read-only
Inspect

Read a page, database row or dashboard by id (type auto-detected; a dashboard comes back as its block spec). mode: "outline" returns headings + first line per section — a cheap skim for a long page (the map shows body sizes) before a full read.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNofull
pageIdYesPage or row id
includeCommentsNoAlso return the comment thread

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlNoDashboard only: where a human can see it
iconNo
modeNo"outline" when collapsed
specNoDashboard only: the block spec (outline mode: `blocks` with id/type/title instead)
typeYespage | database | database_row | dashboard
titleNo
contentNoMarkdown body (collapsed in outline mode); absent for a dashboard
commentsNoPresent only when includeComments is true
databaseIdNo
propertiesNoDatabase-row properties (rows only)
recurrenceNoPresent when this row is one occurrence of a repeating series: seriesId, occurrenceDate, detached, rule, occurrences
fullContentCharsNoFull body size in chars (outline mode) — gauge whether a "full" fetch is worth it

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description doesn't need to restate safety. It goes beyond by explaining the type auto-detection, the dashboard spec behavior, and the definition of outline mode. This adds helpful behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loads the primary function. The mode explanation is efficiently included, and the guidance on using outline as a skim is optimized for agent decision-making.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description needn't explain return values. It covers the key nuances (type auto-detection, dashboard behavior, outline mode) that an agent needs to invoke correctly. It doesn't mention pagination or rate limits, but these are minor given the tool's simplicity and read-only nature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all three parameters with descriptions for pageId and includeComments, and mode has an enum. The description clarifies the 'outline' option and what it returns, adding some value beyond the schema. However, most parameter semantics are already in the schema, so a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads various resource types by id, auto-detects type, and returns a dashboard as its block spec. It names specific resources (page, database row, dashboard) and distinguishes from siblings that list or search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear guidance on when to use 'outline' mode as a cheap skim before a full read, and mentions the map shows body sizes. It doesn't explicitly exclude alternatives like query_database or get_pages, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pagesA
Read-only
Inspect

Read several pages/rows by id in one call, for a known, possibly mixed id list. A bad id fails only its own entry — check each "ok". For rows of one database use query_database with filters/fields instead: one query, not N lookups.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoAs in get_pagefull
pageIdsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description doesn't need to repeat that. It adds valuable behavioral detail: 'A bad id fails only its own entry — check each "ok"', which discloses partial failure semantics not present in annotations. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste. The core purpose is front-loaded, followed by the alternative and a failure-behavior note. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (batch read, partial failure) and the presence of an output schema, the description covers the essential points: what it does, when to use an alternative, and failure handling. The 50-item limit is in the schema, so no need to repeat. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (mode has a description, pageIds does not). The description clarifies that pageIds are ids and can be mixed, adding context beyond the schema. However, it does not elaborate on the mode parameter or its effect, leaving some semantics to the schema reference ('As in get_page').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Read several pages/rows by id in one call') with a clear resource and scope. It distinguishes itself from get_page (single) and query_database (filtered) by emphasizing batch retrieval for a known, mixed id list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative (query_database) and gives the condition for when to use it instead ('For rows of one database use query_database with filters/fields instead: one query, not N lookups'). This provides clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_membersA
Read-only
Inspect

Workspace members with roles and join dates.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
membersYesOldest first

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds minor context by naming the returned fields (roles and join dates), but does not discuss pagination, workspace scope, output size, or any other behavioral trait. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that conveys resource and content without wasted words. It is appropriately minimal for a no-parameter list operation and front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, no-parameter, read-only listing with an output schema available, the description covers the core information an agent needs: what is being listed and what fields are included. It is slightly incomplete only in that it does not state scope or when to choose this over a sibling tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description cannot and need not add parameter-level meaning. The schema coverage is effectively complete because there is nothing to document. The baseline of 4 for a no-parameter tool applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('Workspace members') and the key returned attributes ('roles and join dates'), making the tool's purpose immediately understandable. It lacks an explicit verb and does not explicitly contrast against siblings like list_workspace or search_workspace, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given for when to use list_members versus alternatives such as search_workspace or list_workspace. There is no mention of intended use cases, exclusions, or conditions that would route an agent to a sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_workspaceA
Read-only
Inspect

List sidebar items (pages and databases), optionally under one parent; paginated. For orientation the workspace digest/map is cheaper.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNonextCursor from the previous page
parentIdNoOmit for root items

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
hasMoreYes
nextCursorNoPass back as cursor to continue

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds behavioral context by noting that results are paginated and can be scoped under one parent, but it does not go deeper into cursor mechanics, limits, or ordering. This meets the baseline given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The main capability is front-loaded, pagination and parent scoping are included, and the cheaper alternative is appended without disrupting the primary message.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with three optional parameters and an output schema, the description covers what is listed, optional scoping, pagination, and a cost-saving alternative. Nothing essential is missing for an agent to decide whether to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, with parentId and cursor already documented. The description reinforces that parentId is optional ('optionally under one parent') and that pagination exists, but it does not illuminate the limit parameter or cursor semantics beyond what the schema provides. It is adequate but not additive enough to score higher.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a specific resource ('sidebar items'), and the item kinds ('pages and databases'), and notes the optional parent scoping. This clearly distinguishes it from siblings like get_pages or search_workspace by anchoring the operation to the workspace sidebar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions a cheaper alternative ('workspace digest/map') and the condition under which it is preferable ('For orientation'). It does not enumerate exclusions versus every sibling, but the main alternative guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_contextA
Read-only
Inspect

Build a task-specific, token-budgeted context pack from the most relevant pages: lexical rank, human-reviewed knowledge preferred, stale/deprecated concepts penalized, plus the top hits' link neighbors. Use it before multi-page product or coding work instead of many search/get_page calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesThe concrete task or question
keywordsNoSynonyms, and the workspace's language (e.g. English terms for a Turkish task)
maxTokensNoBudget for the returned JSON, approx. tokens
maxConceptsNo
trustPolicyNoprefer-human-reviewed
includeRelatedNoAdd title/id refs from the top concepts' link neighborhoods

Output Schema

ParametersJSON Schema
NameRequiredDescription
taskYes
policyYes
profileYes
relatedYes
conceptsYes
handlingYes
warningsYes
expiresAtNo
retrievalYes
truncatedYes
budgetTokensYes
contextRunIdNo
estimatedTokensYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, and the description adds meaningful non-obvious behavior: lexical ranking, preference for human-reviewed knowledge, penalization of stale/deprecated concepts, and inclusion of link neighbors. This goes beyond the annotation surface and explains selection logic without contradicting the read-only hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with no filler. The behavioral core is front-loaded, and the usage guidance is delivered in a small, focused second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, output schema, and annotations, the description covers purpose, selection behavior, usage timing, and alternatives. An agent has enough to decide when to invoke it and roughly what to expect without missing critical operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, so the schema does substantial work, but the description adds semantic color: 'lexical rank' clarifies how task/keywords drive relevance, 'human-reviewed knowledge preferred' maps to trustPolicy, and 'top hits' link neighbors' explains includeRelated. Only maxConcepts lacks any meaningful description, so the description partially compensates for the uncovered parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Build') and resource ('task-specific, token-budgeted context pack') and clearly differentiates the tool from siblings like search_workspace and get_page by describing a composite, page-synthesizing operation. This is immediately distinct from simple retrieval tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it: 'before multi-page product or coding work' and contrasts it with 'instead of many search/get_page calls'. This gives an agent direct routing guidance with a concrete alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_audit_logA
Read-only
Inspect

Agent activity log for this workspace, filterable by tool, status and date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO 8601
fromNoISO 8601
toolNoTool name
limitNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
entriesYesNewest first

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds context by noting the log is workspace-scoped and filterable by tool, status, and date range, which is useful but not deeply behavioral. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that communicates the resource scope and key filtering capabilities without excess. Every part adds useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is sufficient for selecting and invoking this low-complexity tool: it names the workspace scope and filter dimensions, and the output schema and input schema cover the remaining details. Limit is not mentioned, but its default and role are apparent from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 60%, so the schema carries much of the parameter explanation. The description adds a helpful mapping by naming 'tool, status and date range,' aligning with tool, status, to, and from, but it does not clarify limit or provide deeper parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as the 'Agent activity log for this workspace' and conveys that it is queryable via filtering. It does not explicitly contrast with sibling tools, but the subject matter is distinct enough from query_database and search_workspace to be understood.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: use it when you need an agent activity log for the workspace. It mentions filter dimensions but provides no explicit guidance on when to prefer an alternative tool or when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_databaseA
Read-only
Inspect

Rows (and the matching schema) of a database, paginated. Row bodies are NOT included unless "content" is in fields. Use filters to narrow and fields to project only the columns you need — much cheaper on wide tables.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNonextCursor from the previous page
fieldsNoColumn ids or names (case-insensitive); title is always included. Add "content" for row bodies.
filtersNoBy property value, e.g. {"status": "Done"} or {"col_xxx": ["Tag1"]}
databaseIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYesRows carry `recurring: true` when they belong to a repeating series — call get_page for the rule before changing its rhythm
schemaNoColumn schema (trimmed when projecting with fields)
hasMoreNo
nextCursorNoPass back as cursor to continue

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only. The description adds meaningful behavioral context: pagination, that row bodies are omitted unless 'content' is in fields, and that using filters/fields is cheaper on wide tables. These go beyond the annotations and help an agent predict behavior and resource usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. The first sentence states the core function and pagination; the second delivers actionable guidance on filters and fields. It is front-loaded and every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (5 params, nested filters, output schema), the description covers the key behaviors: returns rows and schema, pagination, filtering, projection, content inclusion, and cost implication. It does not detail cursor usage, but the schema and output schema likely fill that gap. It is complete enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers about 60% of parameters (cursor, fields, filters have descriptions). The description reinforces the purpose of filters and fields, and explains the special 'content' value for fields. It does not add detail for limit or databaseId, but the moderate schema coverage means the description partially compensates without being fully comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Rows (and the matching schema) of a database, paginated.' It clearly identifies the tool's function and distinguishes it from schema-only or page-oriented siblings, though it does not explicitly name any sibling. The purpose is clear but could be sharper about when this tool is the right choice over alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives usage guidance: 'Use filters to narrow and fields to project only the columns you need — much cheaper on wide tables.' This implies when to use it (for querying with filtering/projection) and hints at cost. However, it does not explicitly say when not to use it or mention alternatives like get_database_schema or get_pages, leaving the choice partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_workspaceA
Read-only
Inspect

Case- and accent-insensitive search over titles and bodies of pages, databases and rows, best matches first. Use it to locate an item by text when the workspace map does not already give you its id.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYesMatching items

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description doesn't need to state read-only nature. It adds valuable behavioral details: case- and accent-insensitivity and ordering by best matches. These go beyond the schema and annotations, though it does not mention pagination or output structure (covered by output schema).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main purpose and usage condition, no fluff or redundancy. Every word contributes to understanding the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with only 2 parameters and an output schema, so the description covers the core purpose and usage well. However, the missing explanation of 'limit' is a notable gap, though minor given the schema provides a default and the output schema handles return details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It implicitly covers 'query' by describing text search, but the 'limit' parameter is entirely absent. The description does not explain what limit controls or its default behavior, leaving the agent to infer from the schema alone, which is inadequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: case- and accent-insensitive search over titles and bodies of pages, databases, and rows, with best matches first. It names specific resources and a specific verb, distinguishing it from siblings like get_page or list_workspace by its search semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage condition: 'Use it to locate an item by text when the workspace map does not already give you its id.' This implies when not to use it (when you have the id) and provides context for when search is appropriate, though it does not explicitly name an alternative tool.

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.

  1. 24 tool updates
    • Removedadd_comment
    • Removedbulk_create_pages
    • Removedbulk_delete_pages
    • Removedbulk_move_items
    • Removedbulk_update_pages
    • Removedcreate_database
    • Removedcreate_database_view
    • Removedcreate_page
    • Removeddelete_database_view
    • Removeddelete_page
    • Changedget_changes_since5 fields changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Pagination cursor from a previous response's nextCursor field — takes priority over since for resuming a sync"New value: +"From the digest/map header or a previous nextCursor"
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum changes per page (default 100)"
      • changedInput schema / properties / since / description
        Previous value: -"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."New value: +"ISO 8601; ignored when cursor is given"
      • changedOutput schema / properties / nextCursor / description
        Previous value: -"Pass back as cursor to continue or resume a later sync"New value: +"Always present — pass back as cursor to continue or resume a later sync"
      • changedOutput schema / required
        Previous value: -[
        -  "changes",
        -  "hasMore"
        -]New value: +[
        +  "changes",
        +  "hasMore",
        +  "nextCursor"
        +]
    • Changedget_database_schema1 field changed
      • removedInput schema / properties / databaseId / description
        Removed value: -"Database ID (from list_workspace or search)"
    • Changedget_page7 fields changed
      • changedInput schema / properties / includeComments / description
        Previous value: -"Include the page's comment thread (default false, so ordinary reads stay cheap)"New value: +"Also return the comment thread"
      • removedInput schema / properties / mode / description
        Removed value: -"\"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"
      • changedInput schema / properties / pageId / description
        Previous value: -"The workspace item ID or database row ID"New value: +"Page or row id"
      • changedOutput schema / properties / content / description
        Previous value: -"Markdown body (collapsed in outline mode)"New value: +"Markdown body (collapsed in outline mode); absent for a dashboard"
      • addedOutput schema / properties / spec
        Added value: +{
        +  "description": "Dashboard only: the block spec (outline mode: `blocks` with id/type/title instead)"
        +}
      • changedOutput schema / properties / type / description
        Previous value: -"page | database"New value: +"page | database | database_row | dashboard"
      • addedOutput schema / properties / url
        Added value: +{
        +  "description": "Dashboard only: where a human can see it",
        +  "type": "string"
        +}
    • Changedget_pages2 fields changed
      • changedInput schema / properties / mode / description
        Previous value: -"Same as get_page — \"outline\" collapses each body to headings + first line per section"New value: +"As in get_page"
      • removedInput schema / properties / pageIds / description
        Removed value: -"Page/row IDs to fetch (max 50)"
    • Changedget_related_pages10 fields changed
      • changedInput schema / properties / pageId / description
        Previous value: -"Page ID — a standalone page, database, or database row (same IDs get_page accepts)"New value: +"Page, database or row id"
      • addedInput schema / properties / resource
        Added value: +{
        +  "description": "Instead of pageId: a repo file or folder path",
        +  "maxLength": 1000,
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "pageId"
        -]
      • addedOutput schema / properties / note
        Added value: +{
        +  "description": "resource mode: set when no page in the workspace records sources at all",
        +  "type": "string"
        +}
      • changedOutput schema / properties / page / description
        Previous value: -"The subject page"New value: +"The subject page (pageId mode)"
      • addedOutput schema / properties / pages
        Added value: +{
        +  "description": "resource mode: pages resting on it, closest match first (up to 25)",
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "databaseId": {
        +        "description": "Databases and rows — pass to query_database",
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "match": {
        +        "description": "exact | folder (rests on a folder containing it) | inside (rests on a file inside the asked folder)",
        +        "type": "string"
        +      },
        +      "source": {
        +        "description": "The source as the page records it",
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "description": "page | database | database_row",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "title",
        +      "type",
        +      "match",
        +      "source"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / resource
        Added value: +{
        +  "description": "resource mode: the path as matched",
        +  "type": "string"
        +}
      • addedOutput schema / properties / sources
        Added value: +{
        +  "description": "pageId mode: repo files (or URLs) its knowledge sources name; absent when none",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / total
        Added value: +{
        +  "description": "resource mode: matches before the limit",
        +  "type": "number"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "page",
        -  "parent",
        -  "children",
        -  "outgoingLinks",
        -  "backlinks",
        -  "siblings"
        -]
    • Changedlist_workspace3 fields changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Pagination cursor from a previous response's nextCursor field"New value: +"nextCursor from the previous page"
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum items per page (default 100)"
      • changedInput schema / properties / parentId / description
        Previous value: -"Parent item ID (omit for root items)"New value: +"Omit for root items"
    • Removedmove_item
    • Changedprepare_context5 fields changed
      • changedInput schema / properties / includeRelated / description
        Previous value: -"Include title/id references from the top concept's graph neighborhood"New value: +"Add title/id refs from the top concepts' link neighborhoods"
      • addedInput schema / properties / keywords
        Added value: +{
        +  "description": "Synonyms, and the workspace's language (e.g. English terms for a Turkish task)",
        +  "items": {
        +    "maxLength": 60,
        +    "type": "string"
        +  },
        +  "maxItems": 24,
        +  "type": "array"
        +}
      • removedInput schema / properties / maxConcepts / description
        Removed value: -"Maximum page concepts to include"
      • changedInput schema / properties / maxTokens / description
        Previous value: -"Approximate maximum tokens in the returned JSON"New value: +"Budget for the returned JSON, approx. tokens"
      • changedInput schema / properties / task / description
        Previous value: -"The concrete task or question to gather context for"New value: +"The concrete task or question"
    • Changedquery_audit_log5 fields changed
      • changedInput schema / properties / from / description
        Previous value: -"Start of date range (ISO 8601, e.g. \"2025-01-01T00:00:00Z\")"New value: +"ISO 8601"
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum results (default 50)"
      • removedInput schema / properties / status / description
        Removed value: -"Filter by call status"
      • changedInput schema / properties / to / description
        Previous value: -"End of date range (ISO 8601, e.g. \"2025-12-31T23:59:59Z\")"New value: +"ISO 8601"
      • changedInput schema / properties / tool / description
        Previous value: -"Filter by tool name (e.g. \"create_page\", \"query_database\")"New value: +"Tool name"
    • Changedquery_database5 fields changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Pagination cursor from a previous response's nextCursor field"New value: +"nextCursor from the previous page"
      • removedInput schema / properties / databaseId / description
        Removed value: -"Database ID (from list_workspace or search)"
      • changedInput schema / properties / fields / description
        Previous value: -"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."New value: +"Column ids or names (case-insensitive); title is always included. Add \"content\" for row bodies."
      • changedInput schema / properties / filters / description
        Previous value: -"Filter rows by property value, e.g. {\"status\": \"Done\"} or {\"col_xxx\": [\"Tag1\"]}"New value: +"By property value, e.g. {\"status\": \"Done\"} or {\"col_xxx\": [\"Tag1\"]}"
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum rows per page (default 50)"
    • Changedsearch_workspace2 fields changed
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum results (default 10)"
      • removedInput schema / properties / query / description
        Removed value: -"Text to match against item titles and content (case-insensitive substring)"
    • Removedupdate_database_schema
    • Removedupdate_database_view
    • Removedupdate_page

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Full-featured Notion MCP server enabling deep page reading, block editing, snapshot/restore, file uploads, table manipulation, page restore, and destructive page copying.
    33
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Comprehensive MCP server for the Notion API. Provides 22 tools for full CRUD operations on pages, databases, blocks, users, and comments.
    7 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for the Notion API, enabling management of pages, blocks, databases, data sources, comments, and users through natural language.
    6 npm
    3
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.