Skip to main content
Glama
zoeynine

Obsidian Server MCP

by zoeynine

vault_read

Read-onlyIdempotent

Read a Vault text file or a targeted heading, block, or frontmatter entry with version and versionGuard checks. Use document maps to locate targets; heading levels are relative.

Instructions

Read a Vault text file or target with version and versionGuard. Discover targets via vault_get_document_map; targeted heading levels are relative. No link graph.

Input Schema

NameRequiredDescriptionDefault
pathYes
scopeNoRequires a target; defaults to content.
targetNoPair with targetType. Heading: full map path, e.g. ["Root","Child"]; block: ID without ^; property: key.
maxBytesNo
targetTypeNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.2.0
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "content": {
      -        "type": "string"
      -      },
      -      "frontmatter": {
      -        "additionalProperties": {
      -          "$ref": "#/$defs/__schema0"
      -        },
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      },
      -      "path": {
      -        "type": "string"
      -      },
      -      "stat": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "ctime": {
      -            "type": "number"
      -          },
      -          "mtime": {
      -            "type": "number"
      -          },
      -          "size": {
      -            "maximum": 9007199254740991,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "ctime",
      -          "mtime",
      -          "size"
      -        ],
      -        "type": "object"
      -      },
      -      "tags": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "version": {
      -        "pattern": "^sha256:[0-9a-f]{64}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "path",
      -      "version",
      -      "content",
      -      "tags",
      -      "frontmatter",
      -      "stat"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "path": {
      -        "type": "string"
      -      },
      -      "result": {
      -        "$ref": "#/$defs/__schema1"
      -      },
      -      "version": {
      -        "pattern": "^sha256:[0-9a-f]{64}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "path",
      -      "version",
      -      "result"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "content": {
      +        "type": "string"
      +      },
      +      "frontmatter": {
      +        "additionalProperties": {
      +          "$ref": "#/$defs/__schema0"
      +        },
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "path": {
      +        "type": "string"
      +      },
      +      "stat": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "ctime": {
      +            "type": "number"
      +          },
      +          "mtime": {
      +            "type": "number"
      +          },
      +          "size": {
      +            "maximum": 9007199254740991,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "ctime",
      +          "mtime",
      +          "size"
      +        ],
      +        "type": "object"
      +      },
      +      "tags": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "version": {
      +        "pattern": "^sha256:[0-9a-f]{64}$",
      +        "type": "string"
      +      },
      +      "versionGuard": {
      +        "maxLength": 16,
      +        "minLength": 16,
      +        "pattern": "^[0-9a-f]{16}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "path",
      +      "version",
      +      "versionGuard",
      +      "content",
      +      "tags",
      +      "frontmatter",
      +      "stat"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "path": {
      +        "type": "string"
      +      },
      +      "result": {
      +        "$ref": "#/$defs/__schema1"
      +      },
      +      "version": {
      +        "pattern": "^sha256:[0-9a-f]{64}$",
      +        "type": "string"
      +      },
      +      "versionGuard": {
      +        "maxLength": 16,
      +        "minLength": 16,
      +        "pattern": "^[0-9a-f]{16}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "path",
      +      "version",
      +      "versionGuard",
      +      "result"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observedv0.1.0

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already cover readOnly, idempotent and non-destructive behavior, so the description only needs to add beyond that. "No link graph" is a useful disclosure about what is not returned, and "targeted heading levels are relative" clarifies resolution semantics, but the mention of "version and versionGuard" is confusing since no such parameters exist in the schema, and nothing is said about maxBytes truncation behavior.

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

Conciseness3/5

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

Very short and front-loaded, which is good, but the phrase "with version and versionGuard" consumes limited space on parameters that don't exist in the schema, creating noise in an otherwise tight definition. The remaining clauses each carry real information.

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

Completeness3/5

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 rightly absent. However, for a 5-parameter read tool the description does not address maxBytes/truncation, the content-vs-marker scope behavior, or clarify the phantom version parameter, leaving gaps an agent must guess at.

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 only 40%, but the schema itself already documents scope ("Requires a target; defaults to content") and target formats. The description adds the useful note that heading levels are relative and points to vault_get_document_map for building target paths, yet leaves maxBytes and the interaction between target/targetType and scope largely unexplained, and references a version parameter that isn't in the schema.

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?

States a specific verb and resource ("Read a Vault text file or target") and adds a scope exclusion ("No link graph"). The word "text" implicitly separates it from vault_read_binary, but the contrast is never made explicit.

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 actionable routing hint: "Discover targets via vault_get_document_map," which tells the agent how to obtain the target value this tool requires. It lacks an explicit when-not statement (e.g. when to prefer vault_read_binary or search_query), so it stops short of full alternative coverage.

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