Skip to main content
Glama

store

Store structured entities and file content in Neotoma's deterministic state layer, supporting both data types in one request with content-addressed deduplication.

Instructions

Unified storing for structured, file-backed, or combined payloads in one request. Choose path by source: file- or resource-sourced (attachment/file to preserve) → use file_content+mime_type or file_path; conversation- or tool-sourced (chat or other MCP) → use entities. You may send both entities and file input in the same call. File inputs are stored raw with content-addressed SHA-256 deduplication; the server does not perform AI interpretation during store. Agents should parse and extract entities first when they need structured data from a file, then send those entities alongside the raw file. IMPORTANT FOR STRUCTURED DATA: Include ALL fields from source data. Schema fields go to observations; non-schema fields go to raw_fragments for future schema expansion.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
entitiesNo
relationshipsNoOptional. Create relationships between entities in this request. Indices refer to the entities array (0-based).
source_priorityNo
idempotency_keyNoRequired for structured path, optional for unstructured-only path.
file_idempotency_keyNoOptional idempotency key for file path when sending structured + unstructured in one call.
file_contentNoBase64-encoded file content. Use file_path for local files instead of base64 encoding.
file_pathNoLocal file path (alternative to file_content). If provided, file will be read from filesystem. MIME type will be auto-detected from extension if not provided. Works in local environments (Cursor, Claude Code) where MCP server has filesystem access. Does NOT work in web-based environments (claude.ai, chatgpt.com) - use file_content for those.
mime_typeNoMIME type (e.g., 'application/pdf', 'text/csv') - required with file_content, optional with file_path (auto-detected from extension)
original_filenameNoOriginal filename or source label (optional). For unstructured: auto-detected from file_path if not provided. For structured (entities): omit when data is agent-provided (no file origin); the source will have no filename. Pass only when mirroring a real file name or when a display label is desired.
user_idNo
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: 'File inputs are stored raw with content-addressed SHA-256 deduplication; the server does not perform AI interpretation during store.' It explains what gets preserved (file content), what doesn't happen (AI interpretation), and the deduplication mechanism. However, it doesn't mention potential side effects like storage limits, performance implications, or error conditions.

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

Conciseness4/5

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

The description is appropriately sized for a complex tool with 10 parameters. It's front-loaded with the core purpose, followed by usage guidelines and behavioral details. Each sentence adds value: the first states the purpose, the second provides path selection guidance, the third explains combined usage, the fourth describes file handling behavior, the fifth gives agent workflow advice, and the sixth provides structured data guidance. Some sentences could be slightly more concise.

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 complex tool with 10 parameters, no annotations, and no output schema, the description provides substantial context. It covers the unified nature of the tool, parameter selection logic, file handling behavior, and structured data requirements. However, it doesn't explain the return value or what happens after storage, which would be helpful given the lack of output schema. The description is mostly complete but leaves some operational details unspecified.

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

Parameters4/5

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

With 70% schema description coverage, the description adds meaningful context beyond the schema. It explains the semantic distinction between 'entities' (for conversation/tool-sourced data) and file parameters (for file/resource-sourced data), clarifies when to use each parameter type, and provides guidance on 'original_filename' usage. The description compensates well for the 30% schema coverage gap by explaining parameter relationships and usage patterns.

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?

The description clearly states the tool's purpose as 'Unified storing for structured, file-backed, or combined payloads in one request.' It specifies the verb ('storing') and resources ('structured, file-backed, or combined payloads'), making the purpose clear. However, it doesn't explicitly differentiate from sibling tools like 'store_structured' and 'store_unstructured' beyond mentioning it's a unified version.

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?

The description provides explicit guidance on when to use this tool: 'Choose path by source: file- or resource-sourced (attachment/file to preserve) → use file_content+mime_type or file_path; conversation- or tool-sourced (chat or other MCP) → use entities.' It also explains alternatives ('Agents should parse and extract entities first when they need structured data from a file, then send those entities alongside the raw file') and includes important constraints ('Include ALL fields from source data').

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/markmhendrickson/neotoma'

If you have feedback or need assistance with the MCP directory API, please join our Discord server