Search by Property
vault_search_by_propertyFind Obsidian notes by exact property key and value, optionally limited to a folder, when you lack a text query.
Instructions
Find notes where a property matches a value.
Example: vault_search_by_property({ key: "status", value: "in-progress" }) Example: vault_search_by_property({ key: "type", value: "session-log", folder: "Code Projects" })
When to use: Finding notes by metadata when you don't have a text query. Prefer vault_search when you also have a text query (it supports property filters too). Prefer vault_search_by_tag for tag-specific queries (it matches nested tags and #tags in note bodies; key "tags" here matches only the tags property). Use vault_list_property_keys to discover valid keys and vault_list_property_values to see what values a key takes.
Parameters:
key and value both match exactly and case-sensitively, with no partial matching or globbing; value matches a stored text value as written.
A value written as a complete, finite YAML number (-4, 04, .5, 4., 1e3, 0x1F, 0o17) also matches stored numbers numerically: "04" and "4.0" match number 4 and their own literal text, but not text "4". Anything else ("4abc", " 4", 0b binary) matches only as text.
A checkbox matches only as text: pass "1" (checked) or "0" (unchecked); "1.0" and "true" do not match.
A list property matches when an element equals value in full: "blog" matches tags: ["blog", "draft"] but not tags: ["my-blog"].
folder names a whole folder, subfolders included: "Projects" covers "Projects/Archive" but not "ProjectsOld/", ignoring ASCII letter case; omit it to search the entire vault.
limit keeps the most recently modified matches; nothing in the response signals truncation; raise limit for more.
Behavior: Results can lag a file change by a few seconds.
Errors:
An unknown key or unmatched value returns an empty array, not an error.
"[SqliteError]: …" / "[IndexIntegrityError]: …" — the index failed, not the call; the message says what to do
Returns: JSON array of note metadata: path, title (the title property; file name without .md when missing or not text), tags (the tags property; vault_update_properties edits it), body_tags (#tags in the note's text, one per spelling; vault_replace_in_note edits them; absent when none), related ([] when missing), folder (top-level, "" at the root), type (null when missing or not text), created (null when missing or not an ISO date), modified (ISO 8601 file time), bytes (on-disk size), and when present leading_callout (the opening callout, { type, title, body }) and additional_properties (every property but title, type, created, related and tags). Sorted by most recently modified (any file write, so a recently-synced note can sort ahead of an older edit), then by path.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"key": "<key>",
"value": "<value>"
},
"name": "vault_search_by_property"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Property key name (e.g. "status", "type", "tags"). | |
| limit | No | Max results (default 20) | |
| value | Yes | Value to match (e.g. "active", "4", "1e-7"). | |
| folder | No | Restrict to a folder (e.g. "Projects") |