Skip to main content
Glama
Junemind

june-mcp

Official

june-mcp

Give your agent a memory. june-mcp is the official MCP server for Junê — it connects any MCP host (Claude Desktop, Claude Code, and friends) to a June knowledge graph, so your agent can ask, search, and remember against a shared, cited, tenant-isolated memory.

This package is a thin, zero-logic connector: all retrieval, graph assembly, and answering happen on the June endpoint you point it at. No engine code lives here — which is why it's small enough to read in one sitting.

Claude Desktop / Claude Code  ──stdio──▶  june-mcp  ──HTTPS──▶  your June endpoint
                                                                 (graph · retrieval · answers)

Install

pip install june-mcp          # just the connector   (or: pipx install june-mcp)
pip install june-ai           # umbrella: june-mcp + june-bench (the benchmark suite)
pip install "june-bench[mcp]" # the bench, with the connector as an extra

Related MCP server: knowledgeplane

Point it at a June endpoint

june-mcp speaks to any June service. Three ways to have one:

  1. Junê desktop app (local-first). Run the Junê app and connect to its local engine — your files, graph, and keys stay on your machine.

  2. Your own June service. Pro/Team customers running the june-local engine package point JUNE_BASE_URL at their own server.

  3. Hosted (Team). Point at your hosted June workspace endpoint with the API key from your console.

Configure

The server is fail-closed: it refuses to start unless it knows where to connect and as whom, and tells you everything that's missing in one message (not one error at a time).

env

required

meaning

JUNE_BASE_URL

Your June endpoint, e.g. http://localhost:8000

JUNE_CANVAS

The canvas (workspace) to bind this connection to — a name (work) or a canvas id. Names resolve to the id at startup; ambiguous names fail closed

JUNE_CANVAS_CREATE

optional

1 creates the named canvas on first run if it doesn't exist yet (refused in read-only mode)

JUNE_API_KEY

Your June API key (JUNE_ALLOW_ANON=1 explicitly opts out for keyless local setups)

JUNE_LLM_KEY

optional

Bring-your-own LLM key for cited answers — forwarded per-request as a header, never logged, never stored on the service

JUNE_READONLY

optional

1 hides + refuses all write tools (memory becomes read-only)

JUNE_FILES_ROOT

optional

Opt-in directory agents may upload files from via june_ingest_file — unset ⇒ that tool doesn't exist

JUNE_TIMEOUT_READ / JUNE_TIMEOUT_ANSWER

optional

Per-verb timeouts (defaults 15 s / 120 s)

JUNE_TOOL_CONCURRENCY

optional

Max tool calls executing at once on this connection (default 8). Hosts pipeline requests over one stream; this is the explicit ceiling — excess calls queue, never stampede

JUNE_DOCS_CANVAS

optional

Canvas holding the agent docs (standing instructions/skills — see Agent memory below). Default agent_docs; created on the first june_doc_save

JUNE_DOCS_REFRESH

optional

0 disables the periodic standing_docs digest (default on — it's the anti-forgetting safety net)

JUNE_DOCS_REFRESH_CALLS / JUNE_DOCS_REFRESH_MINUTES

optional

Digest cadence: due every N tool calls (default 12) or M minutes (default 10), whichever comes first

JUNE_DOCS_DIGEST_CHARS

optional

Serialized digest size cap (default 2000)

JUNE_EXPORT_ROOT

optional

Opt-in repo directory the agent may export June pages/docs into as files (see Repo sync below) — unset ⇒ the three repo-sync tools don't exist

JUNE_EXPORT_GIT

optional

1 commits exactly the files each export wrote (pathspec-limited, never pushes)

JUNE_EXPORT_DIR

optional

Agent-docs subtree inside the root (default docs/agent)

JUNE_LOG_LEVEL

optional

Logging is stderr-only by design — stdout is the MCP wire

Check it before your agent does

JUNE_BASE_URL=http://localhost:8000 JUNE_API_KEY=... JUNE_CANVAS=work june-mcp --doctor

The doctor verifies, in order: config → service reachable → canvas resolution (your canvas name → its id, e.g. name "work" → 9147bee6-…) → search seam healthy → tool manifest, and prints PASS/FAIL per check with a mapped hint (e.g. a missing name lists the canvases that DO exist and points at JUNE_CANVAS_CREATE=1). The doctor exits 0 only when every check passes (1 otherwise); the server itself exits 2 on a config error instead of starting half-wired. Run the doctor first; it catches every common misconfiguration before your agent ever sees the server.

Wire it into Claude

Claude Desktop — merge into claude_desktop_config.json (Settings → Developer):

{
  "mcpServers": {
    "june": {
      "command": "june-mcp",
      "env": {
        "JUNE_BASE_URL": "http://localhost:8000",
        "JUNE_API_KEY": "your-key",
        "JUNE_CANVAS": "work",
        "JUNE_LLM_KEY": "your-llm-provider-key"
      }
    }
  }
}

Claude Code:

claude mcp add june -e JUNE_BASE_URL=http://localhost:8000 \
  -e JUNE_API_KEY=your-key -e JUNE_CANVAS=work \
  -e JUNE_LLM_KEY=your-llm-provider-key -- june-mcp

Fully restart the host (Cmd+Q on macOS), then check the server shows 29 tools (30 when you opt into june_ingest_file via JUNE_FILES_ROOT).

The tools

tool

what your agent gets

june_answer

A grounded, cited answer from the graph — abstains rather than guesses

june_search

Ranked evidence for a query (supports multi-hop)

june_context

An assembled context pack under a token budget

june_neighborhood

The graph around one node

june_subgraph

A bounded subgraph export

june_remember

Write a fact/note into the graph (becomes retrievable + citable immediately)

june_ingest

Structured node/edge ingestion

june_enumerate

EVERY node matching a predicate — recall-complete "list ALL X" (not top-k)

june_ingest_file

Upload one local file (pdf/docx/xlsx/csv/html/md/images/audio) from the operator-approved folder — only exists when you set JUNE_FILES_ROOT

june_enrich

Pro: background re-extraction of the canvas with the richer engine (idempotent; job + poll; 403 on free)

june_resolve

Maintenance: merge duplicate entities via reversible same_as edges (runs server-side; strong_only=false unlocks the semantic tier on Pro)

june_docs_refresh / june_doc_list / june_doc_get

Read the agent's standing docs — full digest, registry listing, one doc's body

june_doc_save / june_doc_delete / june_learn

Write them — create/replace a doc or skill, two-phase delete, append one dated lesson

Descriptions are written for the agent (what → when → returns), and every clamped input is visibly noted back to the agent instead of silently truncated.

Agent memory — docs, skills, and the anti-forgetting digest

Long sessions forget: instructions an agent read at session start (its CLAUDE.md, your conventions) lose force thousands of tokens later. june-mcp fixes this structurally.

Agents save standing docs into June — kind='doc' for durable instructions (pinned=true = always in effect), kind='skill' for named procedures with a one-line when_to_use trigger (bodies load lazily, like skills should), kind='learnings' for an append-only dated log written via june_learn. Each doc is an ordinary June page in the docs canvas (JUNE_DOCS_CANVAS, default agent_docs), marked by a small metadata block — so you can open your agent's memory in the Junê app, read it, and edit it; the agent picks your edits up on its next refresh.

The anti-forgetting half: on the first tool call of every session, and then every 12 calls or 10 minutes (tunable), the connector attaches a compact standing_docs digest to an ordinary tool result — pinned bodies in full, skill trigger lines, doc one-liners. Tool results always re-enter the model's fresh context, so the instructions can't decay the way a system prompt does, in any MCP host, with no host cooperation. A digest that can't be built (service busy, canvas missing) is silently skipped — it never costs the carrying call anything. Set JUNE_DOCS_REFRESH=0 to turn the digest off; the doc tools keep working.

June teaches agents how to use it — from inside itself. The first save creates the docs canvas and seeds agent-memory-guide: the operating manual (what belongs in the system canvas vs a workstream canvas, the three kinds and when to use each, naming, what to pin, revision discipline, repo sync). It's listed in every registry and digest, agents read it with june_doc_get('agent-memory-guide') whenever unsure — and it's an ordinary page, so edit it and your agents follow your version. Before anything is saved, empty states return a setup walkthrough instead of a shrug, and the june_memory_setup prompt has the agent interview you and save your conventions as the first docs.

Making June automatic — the agent depends on it without being told

"Use June" should never need saying. Three mechanisms stack to make usage automatic, each covering the previous one's blind spot:

  1. The host hook (closes the cold start). A server can't speak until the agent's first call — so install June's standing instructions into the file your host loads natively every session:

    JUNE_EXPORT_ROOT=/path/to/project june-mcp --install-instructions            # → CLAUDE.md
    JUNE_EXPORT_ROOT=/path/to/project june-mcp --install-instructions AGENTS.md  # other agents

    It's written as a managed section (your own content is never touched; re-runs update it in place), and it puts the june-first posture — check June before claiming ignorance, remember facts unprompted, learn lessons as they happen — into the system prompt itself.

  2. Proactive tool descriptions (never decay). The core verbs' descriptions tell the model when to reach for them unasked — and descriptions are re-read on every single turn, in every MCP host, with no cooperation needed.

  3. The pinned june-first doc (re-asserts all session). Seeded alongside the guide, it rides every standing_docs digest, so the posture is repeated mid-session exactly where long-context drift would otherwise erode it. Like everything seeded, it's an ordinary page — edit it and your agents follow your version.

What no MCP server can do — honestly — is force a host to act: an agent whose host hides SERVER_INSTRUCTIONS and has no instruction file and never makes one June call stays cold. Mechanism 1 exists precisely so that case never occurs in practice.

Repo sync — the repo stays current with what June knows

Opt in with JUNE_EXPORT_ROOT=<your repo> and three more tools appear:

tool

what it does

june_docs_export

Mirror every agent doc to docs/agent/<name>.md — the repo always holds the current standing instructions

june_page_export

Export any page to a managed file, or into a managed section spliced between markers inside an existing file (path=KNOWHOW.md section=june-learnings) — only the marked region is ever touched

june_page_import

The reverse: edit an exported file in your editor and import it back into its June page — agent docs keep their identity, and a stale file is refused rather than allowed to clobber newer knowledge

Safety rules, all enforced in code and pinned by tests: every path is fenced inside the root (lexical .. check and symlink resolution); a file not written by june-mcp is never overwritten; nothing is ever deleted; and with JUNE_EXPORT_GIT=1 each export commits exactly the files it wrote — pathspec-limited, so your staged work is never swept in, and push never happens. Exported files carry frontmatter and are byte-deterministic, so an unchanged doc re-exports to an identical file and git stays quiet.

The manifest (.june-export.json) makes currency checkable — two CLI modes for CI:

june-mcp --export         # sync agent docs + every managed page/section, commit if enabled
june-mcp --export-check   # write NOTHING; exit 1 if the repo has drifted from June

--export-check in CI turns "are the docs up to date?" from a hope into a failing build.

Free vs Pro — the june-pro tag

june-mcp is one package for everyone; there is no separate "pro build". Pro is a property of the endpoint, not the connector: connect to a Pro-activated June (a Pro license in the app, a Pro key on a hosted workspace) and the same tools carry Pro-grade results: every june_remember and june_ingest_file write runs the richer entity/edge engines automatically (the result reports which engine ran), june_resolve upgrades to semantic matching, and june_enrich backfills memories that were written on the free floor before you upgraded. The terminal shows which world you're in: --doctor prints an edition line and the server's startup banner tags the connection —

june-mcp: connected http://localhost:8000 canvas name "work" → 11d2… [june-pro]

The tag is read from the service's own /v1/whoami (the same entitlement state that gates Pro routes server-side), so it can't disagree with what you actually get — and it's display-only: entitlements are enforced on the service no matter what any client prints. Older services without /v1/whoami simply show no tag.

Security model

The tool surface exposes no canvas/workspace parameter — the workspace is bound server-side from your connection's context, fail-closed. A cross-tenant read isn't a permission check that could fail open; it's unrepresentable from the client. JUNE_READONLY=1 adds a second fence for read-only deployments. Your BYO LLM key rides each answer request as a header and is never persisted or logged by the service.

Errors

Every upstream failure maps to a typed, redacted error payload (built from exception type + HTTP status only — never from response bodies), so the server survives anything the endpoint throws and your agent sees a clean, actionable message.

License

MIT. The Junê engine itself is a separate, closed-source product — this connector is the open part, by design.

Available Tools

10 tools
june_answerA

Answer a question from June's shared knowledge graph — grounded in stored evidence, with citations, and it abstains rather than guessing when the graph doesn't know. Use when you want a finished answer to a factual question about remembered knowledge (people, projects, documents, decisions); use june_context instead when you want raw material to reason over yourself, and june_search when you only need ranked matching items. May take longer than other tools (it runs one LLM synthesis). Returns {answer, citations, used_edge_ids, degraded, mode}; an empty answer or 'abstain' in degraded means the graph has no grounded answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
seedsNo
multihopNodecompose multi-hop questions
max_itemsNo
token_budgetNo

TDQS

A4.1/5.0
Behavior4/5

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

Given no annotations, description discloses key behaviors: abstains rather than guessing, uses citations, runs an LLM synthesis, returns specific fields, and explains empty/abstain meaning. Lacks explicit read-only indication but is largely transparent.

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?

Description is well-structured: purpose first, then usage guidance, performance note, and return format. Slightly lengthy but each sentence adds value. Could tighten parameter mentions.

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?

Covers purpose, usage, return format, and behavioral traits adequately. However, lacks parameter explanations for the five undocumented parameters, which is a gap given no output schema and low schema coverage.

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

Parameters2/5

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

Schema coverage is only 17% (only multihop has description). The tool description does not explain the other five parameters (limit, seeds, max_items, token_budget, query beyond its obvious role). Insufficient compensation for low schema coverage.

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?

Description clearly states it answers factual questions from a knowledge graph with citations and abstains when unknown. It explicitly differentiates from sibling tools june_context and june_search, making purpose distinct.

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?

Provides explicit guidance on when to use this tool (for finished answers) and when to use alternatives (june_context for raw material, june_search for ranked items). Also mentions it may take longer.

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

june_contextA

One call → a ready-to-use context pack: ranked evidence folded to canonical entities (aliases merged), trimmed to a token budget. Use when you want June's knowledge as raw material inside YOUR reasoning or a long draft; use june_answer when you want June to produce the answer itself. Returns {items[], budget, …} sized to token_budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
seedsNo
max_itemsNo
token_budgetNo

TDQS

A3.9/5.0
Behavior4/5

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

Despite no annotations, the description discloses key behaviors: ranking, entity folding, token budgeting, and output structure. Does not mention side effects or error handling, but for a read-style tool this is acceptable.

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?

Two sentences pack the core purpose, usage guidance, and output format with no unnecessary words. Front-loaded with key details.

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

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, no output schema, and no annotations, the description is too sparse. It omits parameter explanations and full output structure details, making it incomplete for reliable invocation.

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

Parameters2/5

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

Schema coverage is 0%, so description must explain parameters, but only token_budget is indirectly referenced. Other parameters (limit, seeds, max_items) are completely unexplained, leaving the agent to guess from names.

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 clearly states the tool produces a context pack from a query, with ranked evidence and canonical entities. It distinguishes from sibling tool june_answer by specifying use cases: raw material for reasoning vs. answer generation.

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?

Explicitly contrasts with june_answer for when to use this tool vs. when to delegate to the answer. Lacks mention of other siblings or conditions where not to use, but the provided guidance is specific and actionable.

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

june_enrichA

Pro: re-extract THIS canvas's existing artifacts with the richer engine, as a background job (idempotent — a second run writes 0 new). Use after a Pro upgrade to backfill memories that were written on the free floor, or after many june_remember writes. Call with no args to start (returns job_id; 409 if one is already running; 403 on free endpoints), then call again with {job: } to check progress. Returns {job_id, state, total, processed, nodes, edges, errors}.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobNo

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: idempotent (second run writes 0 new), runs as a background job, returns 409 if already running, 403 on free endpoints, and the return format. This exceeds the burden.

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 compact and front-loaded with the key action. However, it packs a lot of information into a dense single paragraph, which could be slightly restructured for readability without losing content.

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?

Given the absence of an output schema and annotations, the description provides a complete picture: purpose, when to use, how to use, idempotency, error codes, expected return format ({job_id, state, total, processed, nodes, edges, errors}). Nothing is left ambiguous.

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?

The schema has 0% description coverage, leaving the description to explain parameters. It clearly explains the sole optional parameter 'job': call with no args to start, then pass {job: <job_id>} to check progress. This adds essential meaning beyond the schema.

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 clearly states the tool's purpose: re-extracting existing artifacts with a richer engine as a background job. It distinguishes itself from siblings like june_remember by specifying use cases (after Pro upgrade or many june_remember writes). The verb 're-extract' and resource 'this canvas's existing artifacts' are specific and unambiguous.

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 the tool: after a Pro upgrade to backfill memories, or after many june_remember writes. It also explains idempotency and how to start (no args) vs. check progress (with job argument). This clearly differentiates from alternatives.

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

june_enumerateA

Exhaustive structured retrieval: return EVERY node matching a predicate (terms / regex / node_types / subtype) — not a top-k slice. Use for aggregation questions like 'list ALL customers/incidents/…' where june_search's ranked window could miss members; then reason over the complete list. Returns all matches up to cap (default 500).

ParametersJSON Schema
NameRequiredDescriptionDefault
capNo
regexNo
termsNo
subtypeNo
node_typesNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description discloses key behavioral traits: exhaustive retrieval (not top-k), a cap with default 500, and that it returns all matches up to the cap. It doesn't specify performance or side effects, but the core behavior is well communicated.

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?

The description is two sentences with no superfluous words. It front-loads the purpose ('Exhaustive structured retrieval') and efficiently conveys usage guidance and key details.

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?

Given the lack of output schema and annotations, the description omits details about the return format (e.g., what node fields are included) and how multiple filters combine (AND vs OR). It also doesn't address error scenarios or what happens when the cap is exceeded. The explanation of the default cap is helpful but not fully adequate.

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?

The description mentions the predicate parameters (terms, regex, node_types, subtype) in context, helping agents understand they are filter criteria. However, it does not provide detailed syntax, data types, or combination logic for the 5 parameters, leaving some ambiguity. The cap parameter is explained briefly.

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 clearly states it performs exhaustive structured retrieval returning every matching node, distinguishing itself from june_search's ranked window. It specifies the predicate types (terms, regex, node_types, subtype) and the cap mechanism.

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 explicitly advises using this tool for aggregation questions where completeness is needed, contrasting it with june_search's ranked window. This gives clear guidance on when to prefer this tool over a sibling.

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

june_ingestA

Advanced write: push explicit graph structure (node rows + edge proposals) exactly as given. Use ONLY when you already have structured nodes/edges with ids and kinds — for ordinary 'remember this' information, june_remember is the right verb (it extracts structure for you). Returns write counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodesNo
proposalsNo
idempotency_keyNo

TDQS

A3.9/5.0
Behavior3/5

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

Description discloses that it is a write operation returning write counts, but with no annotations provided, it lacks details on idempotency, error behavior, permissions, or side effects. Mentions 'exactly as given' implying no transformation, but overall minimal behavioral context beyond the basic mutation nature.

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 only two sentences, concise and front-loaded with the primary purpose. The second sentence provides usage guidance. Every sentence serves a purpose, though the first sentence could be slightly tighter.

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?

For a complex tool with three parameters and no output schema, the description covers purpose and usage but lacks parameter details, behavioral traits, and return value structure beyond 'write counts'. It is functional but not comprehensive.

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

Parameters2/5

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

With 0% schema description coverage, the description only hints at the parameters via 'node rows' and 'edge proposals' but does not explain the structure, fields, or purpose of 'nodes', 'proposals', or 'idempotency_key'. The description adds insufficient value for parameter understanding.

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 clearly states the tool pushes explicit graph structure (node rows + edge proposals) exactly as given, using specific verb 'push' and resource 'graph structure'. It distinguishes from sibling june_remember by specifying that june_remember is for ordinary 'remember this' information.

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?

Explicitly states 'Use ONLY when you already have structured nodes/edges with ids and kinds' and directly contrasts with june_remember for ordinary information, providing clear when-to-use and alternative guidance.

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

june_neighborhoodA

The 1-hop edges around one node — who/what connects directly to it. Use after june_search gave you a node_id and you want its immediate relations; use june_subgraph for multi-hop expansion. Requires node_id + node_type from a prior result. Returns {edges[], …}.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
node_idYes
directionNo
node_typeYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries burden. It discloses output format ({edges[], ...}) and prerequisites, but doesn't mention error cases or limits. Still, it provides good behavioral context for a query tool.

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?

Two sentences, front-loaded with definition, no wasted words. Each sentence adds clear value.

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?

Given 4 parameters, no output schema, and no annotations, the description covers purpose, usage context, prerequisites, and output shape. Missing parameter details but otherwise complete for a simple graph tool.

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

Parameters2/5

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

Schema description coverage is 0%, and description only notes that node_id and node_type are required (already in schema). It does not explain direction or limit parameters, leaving users to infer their semantics.

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 clearly states it retrieves '1-hop edges' around a node, using a specific verb and resource. It distinguishes itself from sibling june_subgraph by specifying it's for immediate neighbors versus multi-hop expansion.

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?

Explicitly says to use after june_search returns a node_id, and to use june_subgraph for multi-hop. Also mentions prerequisites: requires node_id and node_type from a prior result.

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

june_rememberA

Save new information into the shared graph by writing text: June extracts entities and relations server-side and links them to what it already knows (on Pro endpoints the richer entity/edge engines run automatically; the result reports which engine ran). Use when the user states a fact, decision, update or note worth persisting for later ('remember that…', meeting notes, a status change). Plain text or markdown, up to ~64k chars. Returns write counts — cite them, don't echo the text back. Prefer this over june_ingest unless you must write explicit graph structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
formatNomarkdown|text|html
source_appNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that entities and relations are extracted server-side, links to existing knowledge, notes that Pro endpoints run richer engines (and the result reports which engine ran), and explains the return of write counts with an instruction not to echo text. It also mentions size limit (64k chars). It could mention if it overwrites or only appends, but overall it's transparent.

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, front-loading the core purpose. It is structured logically: purpose, usage, constraints, return instruction, sibling comparison. While every sentence earns its place, it could be slightly tightened (e.g., 'write text' and 'plain text' are redundant). Still, it is effective and clear.

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?

Given the complexity (3 parameters, no output schema), the description is fairly complete. It explains input format constraints, the process (entity extraction, linking), output format (write counts, not text echoing), and even differentiates between free and Pro endpoints. It lacks error handling or performance notes, but for a write tool with this context, it is sufficient.

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 low (33%, only format has a description). The description compensates by adding that the text parameter accepts plain text or markdown up to ~64k chars, which is beyond the schema. For the format parameter, it effectively repeats the schema's description. The source_app parameter lacks any guidance, so the description provides marginal added value, raising from baseline 2 to 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?

The description clearly states the tool saves new information into a shared graph by writing text, with server-side entity/relation extraction. It distinguishes itself from june_ingest by noting it's preferred unless explicit graph structure is needed, clearly differentiating among its nine siblings.

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?

Explicit usage context is provided: 'Use when the user states a fact, decision, update or note worth persisting for later' with examples like 'remember that…', meeting notes, and status changes. It also specifies when not to use: prefer over june_ingest unless explicit graph structure is needed.

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

june_resolveA

Maintenance: run cross-format entity resolution over the canvas — merges duplicate entities via reversible same_as edges (runs server-side, server-bounded scan). Default strong_only=true is conservative (deterministic signals only); pass strong_only=false to also use the fuzzy tier — which upgrades to SEMANTIC matching on Pro endpoints. Use once after a batch of june_remember/june_ingest writes, not per question; reads are already resolution-aware. Returns {same_as_written, groups, candidates}.

ParametersJSON Schema
NameRequiredDescriptionDefault
strong_onlyNo
min_confidenceNo

TDQS

A4.5/5.0
Behavior5/5

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

No annotations provided, but description fully discloses behavior: runs server-side, reversible, default conservative, upgrade to semantic on Pro endpoints. Also states what happens with strong_only parameter and return format.

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 concise and well-structured, covering purpose, usage, parameters, and return in a single paragraph. Slightly dense but each sentence adds value.

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 tool with 2 parameters and no output schema, the description provides sufficient context: explains when to run, parameter behavior, and return structure. Minor gap on min_confidence, but overall complete.

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 0%, so description must explain parameters. It explains the 'strong_only' parameter well (default behavior and effect of false), but does not mention the 'min_confidence' parameter at all, leaving ambiguity.

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 clearly states the tool performs cross-format entity resolution and merges duplicates via reversible same_as edges. It distinguishes itself from siblings by specifying its use case and context.

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?

Provides explicit guidance: 'Use once after a batch of june_remember/june_ingest writes, not per question; reads are already resolution-aware.' Also explains parameter toggling between conservative and fuzzy matching modes.

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

june_subgraphA

Depth-N neighbourhood around a node (multi-hop expansion, bounded). Use to map a cluster of related entities around a known node; use june_neighborhood for just the direct edges. Requires node_id + node_type from a prior result. Returns {nodes[], edges[], …}; depth ≤ 3.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo
node_idYes
max_edgesNo
node_typeYes

TDQS

A4.4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Mentions bounded depth ≤ 3 and return structure, but does not disclose side effects, auth needs, or read-only guarantee. Adequate but not exhaustive.

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?

Two sentences, front-loaded with main action and sibling distinction. No unnecessary words, every sentence earns its place.

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?

Given no output schema, description gives basic return structure ({nodes[], edges[], …}). Covers depth limit, required params. Missing details on return fields, but sufficient for basic usage.

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?

Schema has 0% description coverage, so description adds meaning: node_id and node_type from prior results, depth ≤ 3. However, max_edges is not described. Good compensation for three of four params.

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?

Clearly states the verb (map/expand) and resource (neighbourhood around a node). Distinguishes from sibling june_neighborhood by specifying multi-hop versus direct edges.

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?

Explicitly says when to use ('map a cluster of related entities') and when to use alternative ('use june_neighborhood for just the direct edges'). Also notes prerequisites: 'Requires node_id + node_type from a prior result.'

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv0.1.0
    • First observedjune_answer
    • First observedjune_context
    • First observedjune_enrich
    • First observedjune_enumerate
    • First observedjune_ingest
    • First observedjune_neighborhood
    • First observedjune_remember
    • First observedjune_resolve
    • First observedjune_search
    • First observedjune_subgraph

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: answer, context, search, enumerate, neighborhood, and subgraph cover different retrieval modes; remember and ingest cover writing; enrich and resolve cover maintenance. No two tools overlap in function.

Naming Consistency4/5

All tools follow a june_<word> pattern using snake_case, which is consistent. However, some tool names are nouns (context, neighborhood, subgraph) rather than verbs, creating a slight inconsistency in grammatical form.

Tool Count5/5

10 tools is well-scoped for a knowledge graph server, covering reading, writing, and maintenance operations without being overly numerous or sparse.

Completeness4/5

The tool set covers CRUD operations reasonably well, with read, create, and update functionalities. However, there is no explicit delete tool, which is a minor gap for a complete lifecycle.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server that gives AI agents and teams persistent, shared memory using a knowledge graph with vector embeddings, automatic consolidation of related facts, and hybrid search.
    3
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    A universal MCP server providing persistent, structured memory through a knowledge graph with graph storage, semantic vector search, and multi-hop traversal for AI agents and IDEs.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local-first compiled knowledge graph MCP server that provides structured memory for AI agents with full-text search, vector embeddings, and timeline tracking.
    415
    8
    MIT

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/Junemind/june-mcp'

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