Skip to main content
Glama

Create Obsidian note

create_obsidian_note
Read-onlyIdempotent

Makes an Obsidian note link. Use when the user wants to save notes or research into their Obsidian vault. Needs title and content; vault, tags and frontmatter are optional. Returns an obsidian://new link that opens Obsidian with the note filled in, plus the full Markdown text. The note is created only when the user opens the link. If the link is over 2,000 characters, warning says so: give the user the Markdown text to save instead. Nothing is stored. For a plain .md file with no Obsidian link, use create_markdown_file.

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": {
      "title": "<title>",
      "content": "<content>"
    },
    "name": "create_obsidian_note"
  }
}

Input Schema

NameRequiredDescriptionDefault
tagsNoOptional list of tags for YAML frontmatter.
titleYesNote title, used as the note name in Obsidian, such as "Edge Compute Patterns".
vaultNoOptional name of the target Obsidian vault. If omitted, opens active vault.
contentYesMarkdown note body (at most 50,000 characters), such as "# Findings\n- Point one".
filenameNoOptional .md filename (defaults to sanitized title).
frontmatterNoOptional extra YAML front matter as key-value pairs. Values can be text, numbers, true or false, or lists, such as {"status": "draft", "version": 1}.

Output Schema

NameRequiredDescriptionDefault
notesYesShort notes to pass on to the user, including any warning.
statusYesAlways ok when the note link was made. Bad input returns an error instead.
warningNoWarning if URI exceeds safe OS limits.
filenameYesSuggested file name for saving as a .md file.
url_lengthYesTotal length of the obsidian:// URI.
obsidian_urlYesobsidian://new deep link to create note in Obsidian.
character_countYesLength of the markdown content in characters.
markdown_contentYesFull note text including structured YAML frontmatter.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedInput schema / examples
      Removed value: -[
      -  {
      -    "content": "# Findings\n- Point one",
      -    "tags": [
      -      "architecture",
      -      "edge"
      -    ],
      -    "title": "Edge Compute Patterns",
      -    "vault": "TechNotes"
      -  }
      -]
  2. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "content": "# Findings\n- Point one",
      +    "tags": [
      +      "architecture",
      +      "edge"
      +    ],
      +    "title": "Edge Compute Patterns",
      +    "vault": "TechNotes"
      +  }
      +]
  3. Changed5 schema fields changed
    • changedInput schema / properties / content / description
      Previous value: -"Markdown note body (at most 50,000 characters)."New value: +"Markdown note body (at most 50,000 characters), such as \"# Findings\\n- Point one\"."
    • changedInput schema / properties / frontmatter / description
      Previous value: -"Optional custom key-value metadata to include in YAML frontmatter."New value: +"Optional extra YAML front matter as key-value pairs. Values can be text, numbers, true or false, or lists, such as {\"status\": \"draft\", \"version\": 1}."
    • changedInput schema / properties / title / description
      Previous value: -"Note title (used as note name in Obsidian)."New value: +"Note title, used as the note name in Obsidian, such as \"Edge Compute Patterns\"."
    • addedOutput schema / properties / notes / description
      Added value: +"Short notes to pass on to the user, including any warning."
    • addedOutput schema / properties / status / description
      Added value: +"Always ok when the note link was made. Bad input returns an error instead."
  4. Changed1 schema field changed
    • removedOutput schema / properties / note_from_openkrill
      Removed value: -{
      -  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      -  "type": "string"
      -}
  5. Changed1 schema field changed
    • addedOutput schema / properties / note_from_openkrill
      Added value: +{
      +  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      +  "type": "string"
      +}
  6. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that nothing is persisted server-side, that the note materializes only when the user opens the obsidian:// link, and the 2,000-character link limit with a prescribed fallback. These are non-obvious behavioral traits the readOnly/idempotent hints alone would not reveal.

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?

Seven short sentences, front-loaded with the core behavior, then constraints, then the alternative. Every sentence carries operational information (return value, deferral of creation, length limit, sibling routing) with 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?

Complete for a link-generating tool: it explains what is returned, that no state is stored, the size constraint, and how to handle the failure case despite an output schema already existing. Nothing an agent needs to call this correctly 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 100% and each parameter (title, content, vault, tags, frontmatter, filename) is documented in the schema itself. The description only restates which fields are required versus optional and omits filename entirely, so the schema is doing the real work — baseline 3.

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 ("Makes an Obsidian note link") and immediately names the sibling it is not — create_markdown_file for plain .md files. An agent can distinguish it from create_whatsapp_link or create_x_post without opening any schema.

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?

Gives an explicit trigger ("Use when the user wants to save notes or research into their Obsidian vault") and an explicit alternative with the condition that selects it ("For a plain .md file with no Obsidian link, use create_markdown_file"). The fallback for oversized links is also routed to the user explicitly.

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.