Memory Metadata Search
Find notes by their structured frontmatter fields instead of (or in addition to) free-text content. Any custom YAML key in a note's frontmatter beyond the standard set (title, type, tags, permalink, schema) is automatically indexed as entity_metadata and becomes queryable.
When to Use
- Filtering by status or priority — find all notes with
status: draftorpriority: high - Querying custom fields — any frontmatter key you invent is searchable
- Range queries — find notes with
confidence > 0.7orscore between 0.3 and 0.8 - Combining text + metadata — narrow a text search with structured constraints
- Tag-based filtering — find notes tagged with specific frontmatter tags
- Schema-aware queries — filter by nested schema fields using dot notation
Two Tools, Two Patterns
Both accept the same filter syntax.
Filter Syntax
Filters are a JSON dictionary. Each key targets a frontmatter field; the value specifies the match condition. Multiple keys combine with AND logic.
Equality
Array Contains (all listed values must be present)
$in (match any value in list)
Comparisons ($gt, $gte, $lt, $lte)
Numeric values use numeric comparison; strings use lexicographic comparison.
$between (inclusive range)
Nested Access (dot notation)
Quick Reference
Rules:
- Keys must match
[A-Za-z0-9_-]+(dots separate nesting levels) - Operator dicts must contain exactly one operator
$inand array-contains require non-empty lists$betweenrequires exactly[min, max]
Using search_by_metadata
Metadata-only search. Results are scoped to entity-level items.
Using search_notes with Metadata
Combine text search with structured filters by passing metadata_filters, tags, or status alongside the text query.
Merging rules: tags and status are convenience shortcuts merged into metadata_filters via setdefault. If the same key exists in metadata_filters, the explicit filter wins.
Tag Search Shorthand
The tag: prefix in a query converts to a tag filter automatically:
Example: Custom Frontmatter in Practice
A note with custom fields:
Queries that find it:
Guidelines
- Use metadata search for structured queries. If you're looking for notes by a known field value (status, priority, type), metadata filters are more precise than text search.
- Use text search for content queries. If you're looking for notes about something, text search is better. Combine both when you need precision.
- Custom fields are free. Any YAML key you put in frontmatter becomes queryable — no schema or configuration required.
- Multiple filters are AND.
{"status": "active", "priority": "high"}requires both conditions. - Prefer
search_by_metadatafor filter-only queries. It's purpose-built and returns entity-level results. Usesearch_noteswith empty query only when you also need text search features. - Dot notation for nesting. Access nested YAML structures with dots:
{"schema.version": "2"}queries theversionkey inside aschemaobject. - Tags shortcut is convenient but limited.
tagsandstatusare sugar for common fields. For anything else, usemetadata_filtersdirectly.

