Skip to main content
Glama

Engram Obsidian Memory Sync

Search Notes

search_notes
Read-onlyIdempotent

Search your personal knowledge base. Finds relevant notes using semantic search. Searches across ALL your vaults by default; pass vault_id to limit to one. Omit query to list the most recently updated notes instead (filters still apply). Pass similar_to with a note path, instead of query, to find notes like that one. Use when the user asks about their notes, vault, knowledge, or memory.

Input Schema

NameRequiredDescriptionDefault
modeNoRetrieval mode (default hybrid). Use 'keyword' for exact terms, identifiers, code, or error strings; 'vector' for purely conceptual/semantic queries; 'hybrid' (default) blends both.hybrid
tagsNoOptional list of tags to filter by
typeNoOptional frontmatter type to filter by (e.g. 'Playbook', 'Reference'); case-insensitive
limitNoMaximum number of results (1-20, default 5)
queryNoNatural language search query. Omit, or leave empty, to list the most recently updated notes that match the filters.
fieldsNoOptional filters on any frontmatter key, all must match: user-added keys and the built-in status, author, reviewed_by, source, project, type, tags (exact) and created, updated, reviewed, expires, due, priority (range). op: eq, in (a list, at most 100), gt/gte/lt/lte (numbers or ISO dates), after/before (ISO dates; a bare date is the whole UTC day). A quoted number is text. created/updated fall back to the note's real times when the key is missing. A key no note has is an error.
folderNoOptional folder path to scope the search to. With no query, the folder and all its subfolders. With a query, the folder and all its subfolders for notes the search index has already upgraded, and only notes directly in this folder for the rest, until the upgrade finishes.
vault_idNoOptional: limit the search to a single vault, by name (e.g. "Engram") or UUID. Omit to search across ALL your vaults. Call list_vaults to see them.
diversityNoResult diversity (0 = most relevant, default tuned per plan; 1 = most varied). Uses Maximal Marginal Relevance to reduce redundancy among results.
similar_toNoPath of a note, e.g. "Projects/Alpha.md": return notes similar to it, using its stored embedding (no query needed). Do not combine with query. The note itself is excluded; filters still apply.
created_afterNoOnly notes created at/after this ISO 8601 datetime (frontmatter created/date)
updated_afterNoOnly notes updated at/after this ISO 8601 datetime (frontmatter timestamp/modified; without one, the file's modified time rounded up to the hour). Because that fallback rounds up, it can be up to an hour ahead, so updated_before set to now can leave out notes edited in the current hour.
created_beforeNoOnly notes created at/before this ISO 8601 datetime
updated_beforeNoOnly notes updated at/before this ISO 8601 datetime (frontmatter timestamp/modified; without one, the file's modified time rounded up to the hour). Because that fallback rounds up, it can be up to an hour ahead, so updated_before set to now can leave out notes edited in the current hour.

Output Schema

NameRequiredDescriptionDefault
resultsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / folder / description
      Previous value: -"Optional folder path to scope the search to. With no query, the folder and all its subfolders. With a query, only notes directly in this folder, or the folder and all its subfolders where the server's note-id search filter is on."New value: +"Optional folder path to scope the search to. With no query, the folder and all its subfolders. With a query, the folder and all its subfolders for notes the search index has already upgraded, and only notes directly in this folder for the rest, until the upgrade finishes."
  2. Changed1 schema field changed
    • changedInput schema / properties / folder / description
      Previous value: -"Optional folder path to scope the search to (exact match)"New value: +"Optional folder path to scope the search to. With no query, the folder and all its subfolders. With a query, only notes directly in this folder, or the folder and all its subfolders where the server's note-id search filter is on."
  3. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"Natural language search query. Omit, or leave empty, to list the most recently updated notes (filters then do not apply)."New value: +"Natural language search query. Omit, or leave empty, to list the most recently updated notes that match the filters."
  4. Changed2 schema fields changed
    • changedInput schema / properties / updated_after / description
      Previous value: -"Only notes updated at/after this ISO 8601 datetime (frontmatter timestamp/modified)"New value: +"Only notes updated at/after this ISO 8601 datetime (frontmatter timestamp/modified; without one, the file's modified time rounded up to the hour). Because that fallback rounds up, it can be up to an hour ahead, so updated_before set to now can leave out notes edited in the current hour."
    • changedInput schema / properties / updated_before / description
      Previous value: -"Only notes updated at/before this ISO 8601 datetime"New value: +"Only notes updated at/before this ISO 8601 datetime (frontmatter timestamp/modified; without one, the file's modified time rounded up to the hour). Because that fallback rounds up, it can be up to an hour ahead, so updated_before set to now can leave out notes edited in the current hour."
  5. Changed1 schema field changed
    • addedInput schema / properties / fields
      Added value: +{
      +  "description": "Optional filters on any frontmatter key, all must match: user-added keys and the built-in status, author, reviewed_by, source, project, type, tags (exact) and created, updated, reviewed, expires, due, priority (range). op: eq, in (a list, at most 100), gt/gte/lt/lte (numbers or ISO dates), after/before (ISO dates; a bare date is the whole UTC day). A quoted number is text. created/updated fall back to the note's real times when the key is missing. A key no note has is an error.",
      +  "items": {
      +    "properties": {
      +      "key": {
      +        "type": "string"
      +      },
      +      "op": {
      +        "default": "eq",
      +        "enum": [
      +          "eq",
      +          "in",
      +          "gt",
      +          "gte",
      +          "lt",
      +          "lte",
      +          "after",
      +          "before"
      +        ],
      +        "type": "string"
      +      },
      +      "value": {}
      +    },
      +    "required": [
      +      "key",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  6. Changed4 schema fields changed
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • changedInput schema / properties / query / description
      Previous value: -"Natural language search query"New value: +"Natural language search query. Omit, or leave empty, to list the most recently updated notes (filters then do not apply)."
    • addedInput schema / properties / similar_to
      Added value: +{
      +  "description": "Path of a note, e.g. \"Projects/Alpha.md\": return notes similar to it, using its stored embedding (no query needed). Do not combine with query. The note itself is excluded; filters still apply.",
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "query"
      -]
  7. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  8. First observed

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds the meaningful default that all vaults are searched unless vault_id is set and that 'filters still apply' when using similar_to, but it does not discuss result ordering/scoring or what the response contains — though an output schema exists, which lowers that burden.

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

Conciseness4/5

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

Four front-loaded sentences that each carry decision-relevant information (scope default, query-omission, similar_to, use-when), with no filler. Minor redundancy with the schema on vault_id scope keeps it from being maximally tight.

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 14-parameter tool the description covers the highest-risk decisions — mode selection via the schema, query vs. omitted query vs. similar_to, and vault scoping — and an output schema plus rich annotations handle the rest. It leaves the get_notes relationship and result ordering to the agent's inference, a small residual gap.

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 100%, so the baseline is 3; every parameter, including mode, folder, diversity and the date bounds, is already documented in the schema. The description restates the query-omission and vault_id default behaviors rather than adding new syntax or interaction rules beyond what the schema says.

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?

States a specific verb and resource ('Search your personal knowledge base... Finds relevant notes using semantic search') plus the default scope ('ALL your vaults by default; pass vault_id to limit'). It also disambiguates the three call shapes — query, omitted query (recency listing), and similar_to — so an agent knows which mode it is invoking.

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?

Gives an explicit trigger: 'Use when the user asks about their notes, vault, knowledge, or memory,' and explains the alternative paths (similar_to instead of query; omit query to list recent notes). It does not contrast with the sibling get_notes, which is the most likely confusion point for a read-a-note-list request, so the routing guidance is clear but not complete.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.