Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
retrieve_file_urlC

Retrieve a signed URL for accessing a file

retrieve_entity_snapshotA

Retrieve the current snapshot of an entity with provenance information. Supports historical snapshots via 'at' parameter.

list_observationsC

List all observations for a given entity

retrieve_field_provenanceC

Retrieve the provenance chain for a specific field in an entity snapshot

create_relationshipA

Create a typed relationship between two entities. relationship_type: PART_OF, CORRECTS, REFERS_TO, SETTLES, DUPLICATE_OF, DEPENDS_ON, SUPERSEDES, or EMBEDS. Use EMBEDS when a container entity (e.g. blog post, document) embeds an asset entity (e.g. image, attachment): source_entity_id = container, target_entity_id = asset. For images/files stored in Neotoma: store the file via store (get source_id), create an image/media entity with source_id, then create_relationship(EMBEDS, post_entity_id, image_entity_id). Optional metadata: caption, order.

create_relationshipsC

Create multiple typed relationships between existing entities in one batch

list_relationshipsC

List relationships for an entity

get_relationship_snapshotA

Get the current snapshot of a specific relationship with provenance

retrieve_entitiesA

Use this when you need filtered entity lists (by type, pagination, and optional published/date filters) or lexical/semantic retrieval via search. Strict mode: search cannot be combined with non-default sorting or published filters. Set include_snapshots=false for lightweight responses that omit snapshot/provenance/raw_fragments. Compatibility aliases search_query and query are accepted but search is canonical.

list_timeline_eventsA

Query timeline events with filters (type, date range, source). Returns chronological events derived from date fields in sources.

retrieve_entity_by_identifierB

Retrieve entity by identifier (name, email, etc.) across entity types or specific type. Falls back to semantic search when keyword match returns no results.

retrieve_related_entitiesB

Retrieve entities connected to a given entity via relationships. Supports n-hop traversal.

retrieve_graph_neighborhoodA

Retrieve complete graph neighborhood around a node (entity or source): related entities, relationships, sources, and events.

storeA

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 bytes create a content-addressed sources row (SHA-256 dedup per user); the response includes source_id / content_hash for the unstructured leg. The server does not invent structured fields from opaque blobs without an explicit interpretation block or a separate interpretation flow. Agents should parse and extract entities first when they need structured data from a readable 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.

parse_fileA

Parse local or base64-encoded files into agent-readable text and first-page PDF images without storing anything. Use before store when you need to extract entities from a file.

correctA

Create high-priority correction observation to override AI-extracted fields. Corrections always win in snapshot computation.

merge_entitiesA

Merge duplicate entities. Rewrites observations from source entity to target entity and marks source as merged.

split_entityA

R5 inverse of merge_entities. Re-points a predicate-selected subset of an entity's observations onto a new or pre-existing entity to repair over-merges (typically the pre-v1.2 heuristic name_key:title collapse on session-scoped types). Schema-agnostic predicate — supply any of observed_at_gte, source_id_in, or observation_field_equals. Observation content is never modified; only entity_id FK is re-bound. Idempotent via (user_id, idempotency_key) — reuse with a different predicate returns ERR_IDEMPOTENCY_MISMATCH. Typed relationships remain bound to the source; rebuild them with create_relationship.

list_potential_duplicatesA

List candidate duplicate entity pairs for an entity_type. Read-only fuzzy post-hoc detector; never auto-merges. Per-schema thresholds and fields come from the schema's duplicate_detection_threshold and duplicate_detection_fields; callers may override threshold per call. Confirm pairs with the user, then hand off to merge_entities.

delete_entityA

Delete an entity. Creates a deletion observation so the entity is excluded from snapshots and queries. Immutable and reversible for audit; use for user-initiated or GDPR-style removal from active use.

delete_relationshipA

Delete a relationship. Creates a deletion observation so the relationship is excluded from snapshots and queries. Immutable and reversible for audit.

restore_entityA

Restore a deleted entity. Creates a restoration observation (priority 1001) that overrides the deletion. Entity becomes visible in snapshots and queries again. Immutable restoration for audit.

restore_relationshipA

Restore a deleted relationship. Creates a restoration observation (priority 1001) that overrides the deletion. Relationship becomes visible in snapshots and queries again. Immutable restoration for audit.

get_entity_type_countsA

Return canonical entity counts by entity_type for the authenticated user. Uses the same dashboard stats aggregation behind GET /stats and sorts results by count descending, then entity_type ascending. Use this when the user asks for counts by type, histograms, or sorted totals. This returns row counts, unlike list_entity_types where field_count is schema field width.

list_entity_typesA

List available entity types. Without keyword: returns a short summary (entity_type, schema_version, field_count) for all types. field_count here means schema field width, not stored entity row count. With keyword: returns full schema (field_names, field_summary) for matching types; pass summary: true to get summary only. Uses hybrid search when keyword is provided: keyword matching first, then vector semantic search. Use before storing structured data to determine the correct entity_type.

analyze_schema_candidatesB

Analyze raw_fragments to identify fields that should be promoted to schema fields. Returns recommendations with confidence scores based on frequency and type consistency.

get_schema_recommendationsB

Get schema update recommendations for an entity type from raw_fragments analysis, agent suggestions, or inference.

update_schema_incrementalA

Incrementally update a schema by adding new fields from raw_fragments or agent recommendations. Creates new schema version and activates it immediately, so all new data stored after this call will use the updated schema. Optionally migrates existing raw_fragments to observations for historical data backfill.

register_schemaC

Register a new schema or schema version. Supports both global and user-specific schemas.

create_interpretationA

Create an interpretation row for an existing source from agent-extracted flat entities. Observations produced by this tool are linked to both source_id and interpretation_id. Use store with an interpretation block when the source-derived extraction can be batched in one store call.

list_interpretationsB

List interpretation runs for the authenticated user, optionally filtered by source_id.

get_authenticated_userA

Get the authenticated user ID for the current MCP session. Returns the user_id that is automatically used for all authenticated actions.

get_session_identityA

Resolve the current session's attribution: trust tier, AAuth / clientInfo fields, active anonymous-write policy, and whether the session is eligible for trusted writes. Safe to call as a preflight health check; does not write any rows.

health_check_snapshotsA

Check for stale entity snapshots (snapshots with observation_count=0 but observations exist). Returns health status and count of stale snapshots.

list_recent_changesA

List the most recently changed records across core Neotoma tables (entities, sources, observations, interpretations, relationships, timeline_events) for the authenticated user. Returns items ordered by latest activity_at.

submit_entityA

Generic submission for entity types with an active submission_config. Creates the primary row plus optional conversation thread and guest_access_token; use submit_issue for GitHub-backed issues.

add_entity_messageB

Append a follow-up conversation_message to the thread for a submitted root entity (entity_id).

get_entity_submission_statusA

JSON entity snapshot for a submitted entity_id; optional guest_access_token for token-scoped read-back.

list_entity_submissionsB

List recent entities of a given entity_type for the authenticated user.

sync_entity_submissionsA

Sync external mirrors for submissions (issue → GitHub sync; other types may no-op until providers are added).

submit_issueA

Submit an issue to the configured operator Neotoma instance; returns guest_access_token when accepted so callers can use token-scoped get_issue_status / add_issue_message read-back. Callers must provide at least one of reporter_git_sha or reporter_app_version. Deprecated alias: visibility 'advisory' is accepted as 'private' for one minor release and returns _deprecation: "visibility 'advisory' is deprecated; use 'private' instead."

add_issue_messageA

Append a message to an issue thread. Provide entity_id or issue_number (issue_number is an integer). Pass guest_access_token when the local issue snapshot does not already carry the operator token.

get_issue_statusA

Return issue status and thread messages. Provide entity_id or issue_number (issue_number is an integer). Pass guest_access_token when token-scoped remote read-through is needed.

sync_issuesA

Full sync of issues from the configured GitHub repo into local Neotoma. Pulls all issues and their messages, creating/updating local entities. Supports filtering by state, labels, and since date.

subscribeA

Create a substrate event subscription (webhook with HMAC delivery, or SSE via GET /events/stream). Requires at least one filter among entity_types, entity_ids, or event_types. Optional sync_peer_id skips webhook delivery when the substrate event carries the same source_peer_id (cross-instance loop prevention).

unsubscribeC

Deactivate a subscription by subscription_id.

list_subscriptionsA

List the current user's active subscriptions (webhook secrets omitted).

get_subscription_statusA

Return one subscription snapshot by subscription_id (webhook secret omitted).

add_peerB

Register a Neotoma peer (peer_config) for bidirectional sync: peer_url, entity_types allowlist, shared_secret for POST /sync/webhook verification.

remove_peerC

Deactivate a peer by peer_id.

list_peersA

List peer_config rows for the current user (secrets redacted).

get_peer_statusB

Fetch peer_config by peer_id plus remote_health (/health probe, semver compat vs this server).

sync_peerC

Bounded outbound peer sync: POST signed /sync/webhook for observations (requires NEOTOMA_PUBLIC_BASE_URL, NEOTOMA_LOCAL_PEER_ID, peer sync_target_user_id). Optional limit.

resolve_sync_conflictA

Stub; use correct on the entity for manual resolution today.

npm_check_updateA

Check if a newer npm version is available. Returns updateAvailable, message, suggestedCommand, and when include_release_notes is true optional release_url, release_notes_excerpt, breaking_changes_excerpt, enrichment_error. Call at session start to encourage user to upgrade.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
All EntitiesAll entities regardless of type (0 total)
All RelationshipsAll relationships regardless of type (0 total)
SourcesAll sources (0 total)
Timeline WidgetEmbedded timeline widget for timeline event tool results.
Entity TypesAll available entity types (66 types)

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