Skip to main content
Glama
everlog-mcp

everlog-mcp

by jlconlin

get_attachment_image

Read-onlyIdempotent

Retrieve an image attachment as a resized JPEG, capped at max_size pixels on its longest side, for viewing journal photos from a local macOS database. Errors if the attachment is not an image or its bytes are missing.

Instructions

Return an image attachment as JPEG, shrunk so its longest side is at most max_size pixels (default 1568). attachment_id is the id from get_entry's attachments list (the 8-char prefix in placeholders also works if unambiguous). Errors if the attachment is not an image or its bytes are missing.

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": {
      "attachment_id": "<attachment_id>"
    },
    "name": "get_attachment_image"
  }
}

Input Schema

NameRequiredDescriptionDefault
max_sizeNo
attachment_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds context beyond them: output format conversion to JPEG, downscaling to a pixel bound with a 1568 default, and the two failure conditions (non-image attachment, missing bytes). It stops short of describing how a missing-byte or ambiguity error surfaces, which keeps it from a 5.

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?

Three sentences, front-loaded with the return behavior and resizing rule, followed by the id-sourcing hint and the error conditions. Every clause carries actionable information; there is no restatement of the tool name or filler.

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 two-parameter read-only tool with no output schema, the description covers return format, sizing, id provenance, and failure modes. Minor gaps remain, such as whether max_size has a floor/ceiling or what a successful binary response looks like structurally, but nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry both parameters, and it does: attachment_id is explained by provenance and accepted abbreviation form, and max_size is explained by what it constrains (longest side), its unit (pixels), and its default. No parameter is left for the agent to guess from a bare title.

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?

The description opens with a specific verb and resource ("Return an image attachment as JPEG") and adds the transformation (shrunk so the longest side is at most max_size pixels), so an agent knows exactly what it gets back. It also implicitly separates this tool from get_entry by positioning itself as the image-fetching step for an attachment id.

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?

It tells the agent where to get the identifier ("attachment_id is the id from get_entry's attachments list") and even offers a shortcut (the 8-char prefix works if unambiguous), which is real routing guidance. It doesn't state when not to use it (e.g., for non-image attachments), but the error clause partially covers that boundary.

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