june-mcp
OfficialThe june-mcp server connects AI agents to a Junê knowledge graph, enabling grounded retrieval, cited answering, and persistent memory against a shared, tenant-isolated graph backend.
Query & Retrieve
june_answer: Get cited, grounded answers to factual questions; abstains rather than guessing when evidence is absent.june_search: Fused lexical + dense + graph-signal retrieval returning ranked nodes/snippets.june_enumerate: Exhaustively retrieve all nodes matching given predicates (terms, regex, types) — not just top-k — for complete aggregation queries.june_context: Assemble a token-budget-trimmed, alias-merged context pack ready for your own reasoning.june_neighborhood: Inspect all 1-hop edges around a known node to see its direct relations.june_subgraph: Multi-hop (depth ≤ 3) expansion around a node to map clusters of related entities.
Write & Ingest
june_remember: Persist plain text or markdown into the graph; entities and relations are extracted server-side automatically.june_ingest: Push explicit structured graph data (nodes + edge proposals) directly.june_ingest_file(opt-in): Upload local files (PDF, DOCX, XLSX, CSV, images, audio, etc.) from an operator-approved directory.
Maintenance & Advanced
june_enrich(Pro): Re-extract existing canvas artifacts with the richer Pro engine as a background job.june_resolve: Merge duplicate entities via reversiblesame_asedges, with optional fuzzy/semantic matching on Pro endpoints.
Configuration & Security
Connect to local, self-hosted, or hosted Team workspaces via environment variables (
JUNE_BASE_URL,JUNE_API_KEY,JUNE_CANVAS, etc.).Enforce read-only mode with
JUNE_READONLY=1.Securely forward bring-your-own LLM keys per-request without logging or storing them.
Run
--doctorfor pre-flight configuration and service health checks.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@june-mcpsearch for notes on the product launch meeting"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 extraRelated MCP server: knowledgeplane
Point it at a June endpoint
june-mcp speaks to any June service. Three ways to have one:
Junê desktop app (local-first). Run the Junê app and connect to its local engine — your files, graph, and keys stay on your machine.
Your own June service. Pro/Team customers running the
june-localengine package pointJUNE_BASE_URLat their own server.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 |
| ✅ | Your June endpoint, e.g. |
| ✅ | The canvas (workspace) to bind this connection to — a name ( |
| optional |
|
| ✅ | Your June API key ( |
| optional | Bring-your-own LLM key for cited answers — forwarded per-request as a header, never logged, never stored on the service |
| optional |
|
| optional | Opt-in directory agents may upload files from via |
| optional | Per-verb timeouts (defaults 15 s / 120 s) |
| 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 |
| optional | Canvas holding the agent docs (standing instructions/skills — see Agent memory below). Default |
| optional |
|
| optional | Digest cadence: due every N tool calls (default 12) or M minutes (default 10), whichever comes first |
| optional | Serialized digest size cap (default 2000) |
| 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 |
| optional |
|
| optional | Agent-docs subtree inside the root (default |
| 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 --doctorThe 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-mcpFully 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 |
| A grounded, cited answer from the graph — abstains rather than guesses |
| Ranked evidence for a query (supports multi-hop) |
| An assembled context pack under a token budget |
| The graph around one node |
| A bounded subgraph export |
| Write a fact/note into the graph (becomes retrievable + citable immediately) |
| Structured node/edge ingestion |
| EVERY node matching a predicate — recall-complete "list ALL X" (not top-k) |
| Upload one local file (pdf/docx/xlsx/csv/html/md/images/audio) from the operator-approved folder — only exists when you set |
| Pro: background re-extraction of the canvas with the richer engine (idempotent; job + poll; 403 on free) |
| Maintenance: merge duplicate entities via reversible |
| Read the agent's standing docs — full digest, registry listing, one doc's body |
| 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:
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 agentsIt'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.
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.
The pinned
june-firstdoc (re-asserts all session). Seeded alongside the guide, it rides everystanding_docsdigest, 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 |
| Mirror every agent doc to |
| Export any page to a managed file, or into a managed section spliced between markers inside an existing file ( |
| 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 toolsjune_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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| seeds | No | ||
| multihop | No | decompose multi-hop questions | |
| max_items | No | ||
| token_budget | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| seeds | No | ||
| max_items | No | ||
| token_budget | No |
TDQS
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.
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.
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.
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.
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.
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| job | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| cap | No | ||
| regex | No | ||
| terms | No | ||
| subtype | No | ||
| node_types | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | No | ||
| proposals | No | ||
| idempotency_key | No |
TDQS
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.
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.
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.
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.
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.
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[], …}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| node_id | Yes | ||
| direction | No | ||
| node_type | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| format | No | markdown|text|html | |
| source_app | No |
TDQS
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.
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.
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.
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.
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.
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| strong_only | No | ||
| min_confidence | No |
TDQS
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.
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.
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.
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.
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.
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_searchA
Fused retrieval over the knowledge graph: lexical + dense + graph signals in one ranked list. Use when you need matching items (nodes/snippets with scores and provenance) — e.g. to find entities or check what the graph holds on a topic; use june_answer for a finished cited answer, june_context for a prompt-ready pack. Returns {items[], degraded_lanes, …}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| seeds | No | ||
| min_confidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as performing fused retrieval with multiple signal types, returning items with scores and provenance, and mentions degraded lanes. Though it does not explicitly declare read-only or state side effects, the description provides sufficient behavioral context for a search-like operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at three sentences, front-loading the core functionality in the first sentence, followed by usage guidance and return structure. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description gives a reasonable overview and distinguishes from siblings, but lacks parameter explanations and detailed return field descriptions. The mention of degraded_lanes is vague. It is adequate but not complete for an agent to fully understand all aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning no parameter descriptions in the JSON schema. The tool description does not explain the individual parameters (limit, seeds, min_confidence) beyond stating the required query. The agent is left to infer meanings, which is insufficient given the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs fused retrieval over a knowledge graph combining lexical, dense, and graph signals into a ranked list. It explicitly distinguishes itself from siblings by specifying when to use june_answer or june_context instead, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 ('use when you need matching items...e.g. to find entities or check what the graph holds on a topic') and when not to, with specific alternatives named (june_answer, june_context). This fully supports correct tool selection.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| node_id | Yes | ||
| max_edges | No | ||
| node_type | Yes |
TDQS
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.
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.
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.
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.
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.
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.
10 tool updates
v0.1.0- First observed
june_answer - First observed
june_context - First observed
june_enrich - First observed
june_enumerate - First observed
june_ingest - First observed
june_neighborhood - First observed
june_remember - First observed
june_resolve - First observed
june_search - First observed
june_subgraph
TDQS
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.
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.
10 tools is well-scoped for a knowledge graph server, covering reading, writing, and maintenance operations without being overly numerous or sparse.
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
Related MCP Connectors
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
An MCP memory server. One memory your agents share — across models, devices and apps.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceLocal MCP server for indexing personal knowledge into SQLite with hybrid search, chunk-level citations, memory tools, and agent orchestration.4MIT
- FlicenseNot gradedqualityCmaintenanceMCP 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-
- AlicenseNot gradedqualityAmaintenanceA 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.1MIT
- AlicenseNot gradedqualityCmaintenanceA local-first compiled knowledge graph MCP server that provides structured memory for AI agents with full-text search, vector embeddings, and timeline tracking.4158MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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