Alto Connector
Integrates with Firebase for publishing Alto timelines as shareable web pages and enabling cross-device synchronization of highlights, notes, and reports. Users host their own Firebase project to control access and data.
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., "@Alto ConnectorI want to build a timeline in Alto — interview me."
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.
Alto Connector
mcp-name: io.github.lukebmandel-debug/alto-connector
A Claude connector that interviews you about your own materials — a course, a novel, a research project — and builds you an interactive, filterable "liquid-glass" Alto timeline: glass cards on colored act bands, entity chips, routed connection lines, detail pages with your own schema, highlights and notes, mobile layout, and a self-contained offline file you can share.
The one rule (§0): Alto is a closed knowledge container. It connects and organizes what you provide — it never invents facts, events, holdings, or descriptions. Sparse notes make a sparse timeline, on purpose. The connector enforces this server-side: authoring tools stay locked until your materials and explicit consent are recorded.
Install
Download the file for your computer from the latest release, then in Claude Desktop go to Settings → Extensions → Advanced settings → Install Extension… and choose it. Restart Claude Desktop and Alto appears under Extensions.
macOS, Apple Silicon |
|
macOS, Intel |
|
Windows, 64-bit |
|
Nothing else to install. Each bundle carries its own Python, which is why it is around 50MB. Claude Desktop ships Node but not Python, and stock macOS still has 3.9 — too old for this server.
Without Claude Desktop
Alto is a plain MCP server, so any MCP client can run it — Claude Code, Cline, Zed, Continue, your own script. No download, no bundle.
Add this to your client's MCP config:
{
"mcpServers": {
"alto": {
"command": "uvx",
"args": ["--from",
"git+https://github.com/lukebmandel-debug/alto-connector",
"alto-connector"]
}
}
}Requires uv
(curl -LsSf https://astral.sh/uv/install.sh | sh). uvx fetches and runs
Alto in a throwaway environment each time, so there is nothing to install or
update.
Prefer a permanent install? Then alto-connector is on your PATH and the
config is simply {"command": "alto-connector"}:
pip install git+https://github.com/lukebmandel-debug/alto-connector
alto-connector --help # check it works; without --help it waits for a
# client to speak to it, which looks like a hangEverything works the same way — the interview, the build, the offline file — because the bundle and this are the same server; the bundle just carries its own Python so Claude Desktop users need not install one.
Timelines land in ~/Documents/Alto. Each is a single self-contained HTML
file you open in any browser — no server, no account, no internet. Shareable
web links are optional (see Publishing below); without them, that file is the
finished product.
Then tell your client: "I want to build a timeline in Alto — interview me."
From a checkout
bash setup.sh — macOS and Claude Desktop only; it registers the
connector by writing claude_desktop_config.json. For any other client, use
one of the two methods above pointed at your checkout.
Related MCP server: Rhylthyme MCP Server
Using it — what a new user actually does
Open a chat and say something like "I want to build a timeline in Alto — interview me."
Claude calls
get_interview_guideand runs a short warm interview:Flow 1 — name the project container and what it's for.
Flow 2 §A — the materials gate: you hand over your actual materials (upload files or paste text into the chat), and explicitly agree that Alto builds only from them.
§B–§I — title, what the axis means, your acts/eras, your entities (characters, doctrines, teams…), node schema (e.g. Facts·Issue·Holding· Rule for law), relationship vocabulary for the lines, extra filter axes, persona, presentation.
Claude authors nodes verbatim from your materials, wires connections, runs a layout preview, builds (a verifier gates every build), and publishes.
You get your timeline two ways:
Offline file (always): one self-contained HTML — double-click to open, send to a friend, works forever with no server.
Web links (optional, still free): if Firebase publishing is configured,
https://<your-site>.web.app/t/<timeline>/plus a homepage listing all your published timelines, a reports page, and cross-device sync of highlights/notes/reports.
Come back any time — drafts resume across chats via
get_timeline.
Publishing (optional web links + cross-device sync)
Timelines are private by default and the offline file always works. To publish shareable links — and to get highlights, notes and reports syncing between your desktop and your phone — you host them on your own free Firebase project (Spark plan, no card).
You host what you share. Everyone who authors a timeline publishes to their
own project, so the people you send a link to read it from your site and their
notes live in your Firestore. That means you can revoke a link at any time
(publish_timeline(timeline_id, visibility="private") deletes the page from
your site), and it means nobody's data flows through anyone else's project.
Reading a shared timeline needs no install and no Alto account — just the link.
console.firebase.google.com → create a project → Hosting → add a site (e.g.
my-alto).Enable Firestore and Authentication → Google in that project, and deploy the per-user rules in
firestore.rules(firebase deploy --only firestore:rules). Do this before publishing: a Firestore left in test mode is world-readable and world-writable for 30 days.npm i -g firebase-tools && firebase loginOpen Alto's settings in Claude Desktop (Settings → Extensions → Alto) and fill in Firebase Hosting site, Firebase project id and Firebase web config. From a checkout instead, set
ALTO_FIREBASE_SITE,ALTO_FIREBASE_PROJECTandALTO_FIREBASE_CONFIGin the environment.The web config comes from Firebase console → Project settings → Your apps → SDK setup and configuration. It is spliced into
alto-cloud.jsat publish time. Leave it unset and sync is simply off: highlights stay in the browser's local storage on each device.ALTO_FIREBASE_BINoverrides the path to thefirebaseCLI if it is not on yourPATH.
Two things worth knowing before you share a link. Published means public to anyone who has the URL — the address carries a random tail so it cannot be guessed, but it is not access-controlled. And a reader who signs in to sync their notes gets an account in your Firebase project: the security rules stop you reading their notes through the app, but you own the project and can see them in the Firebase console.
Repo layout
engine/— the three page templates, extracted content-free from the reference build. The extraction fixtures they were derived from are not published: they contain the author's own writing.test_roundtrip.pyskips without them.alto/build/— brief model, height estimator, layout resolver (a port of the engine's own), block generators, verifier, offline bundler.alto/mcp_server.py— the 14 MCP tools + interview prompt.alto/build/sanitize.py— makes user content inert before it reaches a page. Load-bearing: the engine renders detail sections straight intoinnerHTML.alto/publish_static.py— free-tier static publishing via the Firebase CLI.packaging/— the .mcpb bundles, the download page and the registry entry. Seepackaging/README.md.alto/web.py,alto/auth/— a full remote-server variant (streamable HTTPOAuth 2.1), not used by the local install; kept for a future hosted deployment.
Development
.venv/bin/python -m pytest tests/ # incl. the golden round-trip
python3 -m alto.build samples/contracts_brief.json --bundle # CLI buildPrivacy
See alto/privacy.html. Short version: your source documents stay in your
Claude conversation; the connector stores only what it builds, locally in
~/Documents/Alto (and, if you publish, on your own Firebase site).
Available Tools
15 toolsadd_connectionsAdd connectionsA
Set the full connection list: [[source_id, target_id, relation_key], ...]. Endpoints must be existing nodes; relation_key must be in the brief's vocabulary ('spine' = neutral main thread). Replaces the stored list (send the complete set).
| Name | Required | Description | Default |
|---|---|---|---|
| connections | Yes | ||
| timeline_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal mutation via readOnlyHint=false, and the description adds the crucial side effect that the stored connection list is overwritten. It also discloses constraints that will affect execution, such as existing endpoints and valid relation_key values, which the annotations alone do not provide.
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 well-structured: core action first, then constraints, then the critical replacement instruction. Every sentence adds necessary information without repeating schema or annotation 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?
For a two-parameter tool with a nested array, the description fully covers the complex parameter's structure, constraints, and call contract. The only omitted parameter is the self-explanatory timeline_id, and no output schema is promised, so no return-value description is needed.
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 only shows an array of arrays of strings, but the description decodes each entry as [source_id, target_id, relation_key], explains the relation_key vocabulary, and states endpoint constraints. Timeline_id is not described in the description, though its schema title makes its purpose reasonably clear.
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 uses a specific verb ('Set') and clearly identifies the resource ('full connection list'), immediately correcting the additive implication of the tool name. It also defines the element format and explicitly states that the stored list is replaced, which distinguishes this from incremental add operations like add_nodes.
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 gives clear call guidance: send the complete set because the stored list is replaced, ensure endpoints exist, and use relation keys from the brief's vocabulary. It does not explicitly name sibling alternatives, but the context makes it clear this is for full-list replacement rather than incremental addition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_nodesAdd or update nodesA
Batch-add/update timeline nodes (idempotent upsert by id). Each:
{id, act (0-based), tag, title, desc, col?, parent?, entity_ids?,
axis1_values?, axis2_values?, filters?: {custom_filter_id: value_id},
sections?: [{h,t}]}.
§0: title/desc/sections are authored VERBATIM from the user's materials —
never fill gaps, never collapse multi-item arcs into one node.
parent (outline mode): the id of the concept that CONTAINS this one; omit
it to make this the hub of its unit. Exactly one node per unit has no
parent, and a parent must sit in the same unit as its child. A child may be
sent before its parent — that only warns until you build.
Column guidance (linear mode): alternate sides; 'center' for pivotal beats;
omit col for the deterministic fallback. In outline mode col is
ignored — the tree decides placement, hubs centred and leaves out to the
sides, and the parent→child lines are generated for you, so author only the
cross-links that carry their own meaning.
Locked until the consent gate is open.
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | Yes | ||
| timeline_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses idempotent upsert behavior, verbatim authoring requirements, the rule that exactly one node per unit has no parent, tolerance for out-of-order children, and that col is ignored in outline mode. This is rich behavioral context that annotations alone do not provide.
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 core action is front-loaded, and each remaining section earns its place by governing correct invocation: idempotency, verbatim content, paren containment, and col behavior. Dense but not wasteful.
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 minimal annotations, the description covers idempotency, node shape, required vs optional fields, mode-specific behavior, and content policy. It is slightly incomplete on the semantics of entity_ids and axis values, and on what the response or warning behavior looks like in full.
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 schema description coverage at 0%, the description compensates by listing the node object shape, optional fields, nested structures for filters/sections, and detailed rules for parent and col. However, entity_ids, axis1_values, and axis2_values are named but not semantically explained, so it stops short of a perfect score.
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 opens with 'Batch-add/update timeline nodes (idempotent upsert by id)', which names the specific action, resource, and a key behavioral trait. This clearly distinguishes it from siblings like delete_nodes, add_connections, and build_timeline.
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 mode-specific invocation guidance for linear vs outline modes and explains when to omit parent or col. However, it never explicitly states when to prefer this tool over sibling tools, so selection guidance is implicit rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_timelineBuild timelineB
Emit the timeline from the engine template, verify it (structure, geometry, no invented slots, and a JS parse check of every emitted script), and store the artifacts (hosted page + offline single-file). Fails with the exact check list on any violation.
| Name | Required | Description | Default |
|---|---|---|---|
| timeline_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false; the description aligns by describing a write/storage operation without claiming read-only behavior. It adds useful behavioral context by specifying verification checks and the exact failure mode with a check list.
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?
One dense sentence covers action, verification criteria, outputs, and failure behavior with no filler. The parenthetical check list is compact and the final failure clause is high-signal.
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 single-parameter tool with no output schema, it describes the operation, validation rules, stored artifacts, and failure behavior. It lacks prerequisites and the return value shape, but those are minor for this build/verify/store workflow.
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 never mentions the single required parameter timelene_id or explains how it identifies the timeline. With 0% schema description coverage, the description should compensate, but it relies entirely on the property name and title.
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?
States concrete actions (emit, verify, store) on a specific resource and names the artifact outputs, which distinguishes it from siblings like create_timeline or publish_timeline. It does not explicitly call out sibling differences, but the verification pipeline and artifact storage make the purpose clear.
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?
No guidance on when to use this tool versus alternatives such as run_layout_preview or publish_timeline. The described workflow implies a build-after-creation context, but this is left to the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectCreate projectA
Create a project container (Flow 1). kind: studying|writing|research. Name + purpose only — Alto never stores generated blurbs.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | studying | |
| name | Yes | ||
| purpose | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the operation is not read-only and not destructive, which is consistent with creating a project. The description adds meaningful behavioral context beyond annotations: 'Alto never stores generated blurbs' and 'Name + purpose only' clarify what data is persisted and what is intentionally ignored, reducing the risk of misuse.
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 exceptionally compact: two sentences deliver the action, the resource, the allowed kind values, the relevant parameters, and a key non-obvious behavior. Every clause contributes, and the core action is front-loaded.
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 simple create operation with three flat parameters and no output schema, the description provides the essential information an agent needs: what to create, what kind values are allowed, and what is not stored. It lacks a return-value note and explicit sequencing guidance, but the low complexity keeps this from being a significant gap.
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 schema description coverage at 0%, the description compensates partially by listing the allowed kind values and emphasizing that only name and purpose matter. It does not explain the default/optional behavior of purpose or the required nature of name, but it adds enough semantic meaning to distinguish the parameters.
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 states a specific action and resource: 'Create a project container (Flow 1).' It clarifies the container's scope with 'kind: studying|writing|research' and distinguishes this from sibling tools like create_timeline or list_projects by focusing on the project entity itself.
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 'Flow 1' label implies this is the initial step in a workflow, and 'Name + purpose only — Alto never stores generated blurbs' hints at what the tool is not for. However, it does not explicitly state when to use create_project versus alternatives, nor does it name any sibling tool as a fallback or complement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_timelineCreate timeline draftA
Create a timeline draft from the build brief (Flow 2 §B–§I). brief:
{title, subject?, timeline_id?, columns?: 3|5, node_noun?, period_noun?,
accent?, entity_axis_label?, entity_axis_singular?,
acts: [{label, short?, color?}] (2-7),
mode?: 'linear'|'outline' — 'linear' (default) flows nodes through the
bands in sequence; 'outline' makes them concepts that CONTAIN one
another, one family per band, structure carried by node parent,
§D-Outline,
axes?: [{label, singular, hide_nav?: bool, values:[{id,name,...}]}] (≤2;
hide_nav drops the axis from the nav bar, drawer and legend but KEEPS its
card chips and detail pages, and labels those chips with the value name —
right for a large uncapped axis such as a course's cases),
filters?: [{id, label,
source: 'entity'|'axis1'|'axis2'|'acts'|'coverage'|'depth'|'custom',
values?: [{id,name}] (custom source only, 2-10),
replace_nav?: bool}] (≤2; 'coverage' = auto Solid/Thin from node density;
'depth' = auto Level 1/2/3+ from the containment structure),
relations?: [{key,label?,color?}] ('spine' = neutral main thread; other
relations get distinct palette colors when color is omitted, so their
lines stay tellable apart from the spine. Each label is user-visible: it
appears in the on-page line key (desktop nav + mobile drawer) next to a
swatch of its line color, for every relation a connection actually uses —
so keep labels short, e.g. 'Overrules'),
overview_html?, owner_name?, owner_email?}.
Filters add canvas filter chips that dim non-matching nodes (they never
navigate). Derived sources (entity/axis1/axis2/acts) mirror that
dimension's values and assign nodes automatically; 'custom' declares its
own values and each node picks one via its filters map in add_nodes.
replace_nav makes a mirrored axis1/axis2 filter-only — nav chips, drawer
section, legend dot, and per-node card chips are all suppressed (no
reachable detail pages) — recommended when that axis has no authored
detail sections. On source 'entity' it only swaps the nav chips.
period_noun names the horizontal bands on the homepage tile ("Unit",
"Act", "Era", …); omit it and the label is derived from the project kind
(studying→Unit, writing→Act, research→Phase, default Unit).
Entities are set separately via set_entities. Returns validation warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| brief | Yes | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description explains mode semantics, filter behavior, hide_nav/replace_nav effects, period_noun fallback, and that it returns validation warnings. One gap is that the optional timeline_id inside brief is not explained in terms of whether it creates a new draft, updates, or references an existing timeline.
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 long but justifiably so: it is the only documentation of the nested brief object. It is front-loaded with the primary action, then uses a compact, field-oriented structure that avoids filler while packing in rich behavioral 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 0% schema coverage and no output schema, the description is nearly complete: it covers the full brief structure, edge cases like replace_nav, and the return of validation warnings. It relies on external references like 'Flow 2 §B–§I' and does not define timeline_id's effect or the format of validation warnings, which keeps it just short of fully self-contained.
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 input schema provides almost no detail for brief (0% coverage), and the description compensates comprehensively by documenting every brief field, type, cardinality, and behavioral nuance. project_id is not separately described, but its role is evident from the name and the tool context.
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 opens with a specific verb and resource: 'Create a timeline draft from the build brief (Flow 2 §B–§I)'. It clearly states what is produced and even notes that entities are set separately via set_entities, which avoids overlap with a sibling tool.
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 implies this tool is used to create the initial timeline draft from a build brief, and it explicitly routes entity assignment to set_entities. However, it does not explicitly differentiate create_timeline from similar siblings like build_timeline or publish_timeline, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_nodesDelete nodesADestructive
Remove nodes from the draft (e.g. after §J scope reconciliation). Connections touching removed nodes are dropped too. In outline mode a concept that still contains others is refused rather than silently orphaning them — delete the subtree, or re-parent the children first.
| Name | Required | Description | Default |
|---|---|---|---|
| node_ids | Yes | ||
| timeline_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses that connections touching removed nodes are also dropped and that outline mode refuses to orphan contained concepts. This is exactly the kind of behavioral nuance an agent needs to anticipate side effects.
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 dense sentences deliver purpose, side effects, an edge case, and remediation advice without filler. The main action is front-loaded, and every clause 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 two-parameter destructive tool, this is complete: it explains what gets removed, what is dropped with it, when it might refuse, and how to resolve that refusal. The schema supplies the required argument names, and the description supplies the behavioral context.
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 carries the burden of explaining parameters. It implies node_ids are the nodes to remove and "the draft" maps to the timeline, but it never explicitly names timeline_id or node_ids. The parameter names are conventional enough to infer, but the description could be more direct.
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 opens with a specific verb and resource: "Remove nodes from the draft." It goes beyond a tautology by stating the effect on connections and the outline-mode refusal behavior, clearly distinguishing it from sibling tools like add_nodes and set_entities.
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?
It gives a concrete usage context ("after §J scope reconciliation") and provides actionable guidance for the outline-mode edge case: delete the subtree or re-parent children first. It does not explicitly contrast against sibling tools, but the intended use is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_interview_guideGet interview guideARead-only
START HERE in any Alto session. Returns the interview/build guide (including the non-negotiable closed-system rule §0) plus the user's resumable drafts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, so the description adds useful behavioral context by specifying the returned contents: the interview/build guide, the non-negotiable closed-system rule §0, and the user's resumable drafts. This goes beyond the bare read-only hint without contradicting it.
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 short sentences with zero filler. The imperative 'START HERE' is front-loaded, followed by a compact list of what the tool returns. Every word 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?
For a zero-parameter, read-only retrieval tool, the description is fully sufficient. It states what the tool returns, its ordering role, and a notable content element (§0). No critical information is missing for an agent to invoke it correctly.
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 tool has zero parameters, and the schema covers 100% of the (empty) parameter set. The description does not need to explain parameters, and it doesn't. Baseline for no parameters is 4, which is appropriate.
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 identifies the tool's function: returning the interview/build guide and the user's resumable drafts. The 'START HERE' directive distinguishes it as the session entry point among siblings like get_timeline or list_projects, leaving no ambiguity about its role.
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 states when to use this tool: 'START HERE in any Alto session.' This gives strong contextual guidance. It does not explicitly name alternatives or exclude other tools, but the entry-point framing makes the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timelineGet timeline stateARead-only
Full draft state for resuming: brief, consent, node ids, connection count, status, urls.
| Name | Required | Description | Default |
|---|---|---|---|
| timeline_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation. The description adds valuable context by listing what the returned state includes, such as brief, consent, node ids, connection count, status, and urls. No destructive behavior or authorization concerns need to be disclosed beyond this.
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 a single compact sentence that front-loads the purpose and then provides a colon-delimited list of returned contents. Every word earns its place, and there is no redundant or vague filler.
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 one-parameter, read-only tool, the description is nearly complete: it names the return contents and the intended resumption use case. The lack of an output schema means the field list is valuable, although exact response structure and the meaning of status/url values are not specified.
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 the description does not explain timeline_id beyond what the parameter name and title already imply. There is no guidance about the expected format, default behavior, or how the parameter maps to the returned state, leaving the description to compensate but failing to do so.
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 returns the full draft state for a timeline and enumerates the exact contents included. The title 'Get timeline state' reinforces the read action and resource, and the tool is easily distinguishable from the sibling get_interview_guide.
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 phrase 'for resuming' gives a concrete use case: retrieve the current draft state to continue work. It does not explicitly name alternatives or exclusion conditions, but the usage context is clear for this simple read-only tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList projectsARead-only
List the user's Alto projects and the timelines inside them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only, and the description adds useful context: it clarifies scope ('the user's') and reveals that the result includes timelines nested within projects. No behavioral contradictions exist.
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 a single, efficient sentence that front-loads the action ('List') and clearly states the resource and its nested contents. Every word contributes meaning.
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 zero-parameter, read-only listing tool, the description is complete: it specifies exactly what will be returned (projects and their timelines) and the user scoping. No output schema exists, but the description sufficiently communicates the expected content.
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 tool has no parameters, and the schema is complete with an empty properties object. With zero parameters, the description need not explain parameter meaning; a baseline of 4 is appropriate.
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 uses a specific verb ('List') and identifies the exact resource: the user's Alto projects and the timelines inside them. This distinguishes it from sibling tools like create_project, create_timeline, and get_timeline, which involve creation or retrieval of a single item.
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 states what the tool does but does not provide explicit guidance on when to use it versus alternatives. It does not mention that it is the appropriate choice for getting a broad overview of projects and timelines, nor does it exclude other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_timelinePublish timelineA
Publish the built timeline. visibility: 'private' (only the signed-in owner) or 'link' (anyone with the URL). Returns view + offline-download URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| visibility | No | private | |
| timeline_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that publishing exposes the timeline, explains the access difference between 'private' and 'link', and states the return value (view and offline-download URLs). Since annotations only cover read-only/destructive hints, this adds useful behavioral context without contradicting them.
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 focused sentences deliver the core action, visibility semantics, and return value with no wasted words. The description is front-loaded with the primary purpose and immediately gives the agent actionable 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?
For a simple two-parameter publish action, the description covers the operation, access behavior, and return URLs, even though there is no output schema. It could mention re-publishing behavior or prerequisites, but the essential information for correct invocation is present.
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 adds real meaning to the visibility parameter by explaining who can access the timeline in each mode, compensating for the 0% schema description coverage. However, timeline_id, the required parameter, is not described beyond its schema name, so compensation is only partial.
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 uses a specific verb, 'Publish', with a clear resource, 'the built timeline', and adds meaningful scope by defining visibility options and return URLs. This clearly distinguishes it from sibling tools like build_timeline and get_timeline.
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 phrase 'built timeline' implies this is the final step after build_timeline, and the visibility options give practical usage context. However, the description does not explicitly state when not to use it or mention alternatives, leaving some inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_materials_consentRecord materials + consent (§0 gate)A
THE HARD GATE (§A). Call only after (1) the user provided real materials in the conversation and (2) they explicitly agreed to the closed-system statement. sources: factual manifest, e.g. [{name:'ConLaw syllabus.pdf', kind:'syllabus'}] — the materials themselves stay in the conversation. Until consent=true, node authoring is locked.
| Name | Required | Description | Default |
|---|---|---|---|
| consent | Yes | ||
| sources | Yes | ||
| timeline_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark readOnly=false and destructive=false; the description adds the real gate behavior: sources are recorded as a manifest and the materials themselves stay in the conversation. It does not cover all edge cases such as consent=false behavior, but the core side effect is disclosed.
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-loads the most operationally important guidance ('Call only after'). The example and lock warning are justified, though the §A/§0 emphasis is slightly noisy.
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 gate tool with three parameters and no output schema, it covers the essential calling context, the source payload shape, and the lock behavior. The main gap is timeline_id semantics and return behavior, but these are secondary to the gate conditions.
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%, so the description must carry parameter semantics. It adds a concrete example for sources and explains the role of consent=true, but it leaves timeline_id entirely unexplained and does not address what consent=false would mean.
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 title and description clearly identify the tool as recording materials plus consent to pass a hard gate. It states the exact prerequisites and consequence ('Until consent=true, node authoring is locked'), which distinguishes it from the authoring/publishing 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?
It explicitly says 'Call only after' two concrete conditions and ties the call to unlocking node authoring. This tells an agent exactly when to invoke it and what state must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_layout_previewRun layout (preview)ARead-only
Cheap layout dry-run: resolves columns + vertical positions and reports world height, per-column balance, and warnings — iterate here before build_timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| timeline_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds useful behavioral context by calling the operation 'cheap' and listing the outputs it produces (world height, per-column balance, warnings). This clarifies the call is a non-destructive dry-run without contradicting the annotations.
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 entire description is one purposeful sentence with no filler. It front-loads the core concept ('dry-run'), then gives output details and a workflow pointer, making every part earn 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?
For a one-parameter, read-only tool with no output schema, the description covers what the tool computes, what it reports, and how it fits into the larger build workflow. Nothing needed for selecting and invoking the tool is missing.
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, and the description never mentions timeline_id or explains how to supply it. The single parameter name is somewhat self-explanatory, but the description does not compensate for the missing schema documentation.
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 opens with 'Cheap layout dry-run' and states exactly what the tool does: 'resolves columns + vertical positions and reports world height, per-column balance, and warnings.' It also distinguishes itself from build_timeline by explicitly positioning this as the pre-build iteration step.
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 phrase 'iterate here before build_timeline' explicitly tells the agent when to use this tool and names the sibling it precedes. This is clear routing guidance that is not available from the schema or annotations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_axis_valuesSet axis valuesA
Define or extend an extra axis (slot 1 or 2) after the consent gate.
values: [{id, name, role?, color?, symbol_svg?, sections?: [{h,t}]}],
upserted by id, so this can be called repeatedly as material arrives.
Unlike the entity axis there is no count cap — this is where a course's
cases belong, each carrying the student's own brief in sections.
hide_nav keeps the chips on the cards and the detail pages reachable
while dropping the axis from the nav bar, drawer and legend, and labels
those chips with the value's name rather than a glyph. Set it for anything
with more values than a nav row can hold; skip glyph design for it.
§0: sections are verbatim from the user's materials. This tool exists
because an axis declared inside create_timeline is authored BEFORE
record_materials_consent runs — so axis values carrying real content had no
gate. This one is consent-locked like add_nodes.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | ||
| label | Yes | ||
| values | Yes | ||
| hide_nav | No | ||
| singular | Yes | ||
| timeline_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint=false, destructiveHint=false), so the description carries most of the behavioral burden. It discloses upsert-by-id semantics, repeatability, no count cap, verbatim sections from user materials, and exactly what hide_nav does to navigation and chips. It does not cover auth or errors, but the core mutation behavior is clear.
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 front-loaded and uses a compact pseudo-schema, but it contains a duplicated rationale sentence near the end and some domain jargon. It could be tightened without losing meaning.
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?
The description is rich in domain context: it explains the consent-gate timing, why this tool exists, the entity-axis contrast, and hide_nav behavior. Still, it leaves label and singular undefined, and with no output schema it does not mention what the agent should expect in return. An agent would still need to guess on required parameters.
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 must compensate, and it does for some parameters: values gets a full inline shape, slot is constrained to 1 or 2, and hide_nav is explained in detail. But required parameters timeline_id, label, and singular receive no explanation, leaving significant gaps for a 6-parameter tool with 5 required parameters.
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 opens with a specific verb and resource: 'Define or extend an extra axis (slot 1 or 2) after the consent gate.' It also distinguishes this tool from the entity axis and from axes declared inside create_timeline, so an agent can tell what it is for and how it differs from 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?
The description gives clear when-to-use context: after the consent gate, repeatedly as material arrives, and whenever the axis belongs to a course's cases. It also gives a concrete heuristic for hide_nav. However, it never explicitly names an alternative tool or states when not to use this one, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_entitiesSet entitiesA
Define the entity axis (the chips): ≤12 entities [{id, name, role?, color?, symbol_svg?, sections?: [{h,t}]}]. Omitted colors get a clean palette. Design a unique symbol_svg per entity (guide §C1 has the rules and the exact wrapper) — entities without one all share the same fallback ◆ and become indistinguishable. Detail-page sections must come verbatim from the user's materials (§0).
| Name | Required | Description | Default |
|---|---|---|---|
| entities | Yes | ||
| timeline_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the minimal read/write hints, it discloses concrete consequences: omitted colors are auto-assigned from a clean palette, missing symbol_svg makes all entities fall back to the same ◆ and thus indistinguishable, and sections must come verbatim from user materials. This is exactly the non-obvious behavior an agent needs to know before calling.
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?
Three dense sentences: purpose + shape, color/symbol behavior, section provenance. Every clause carries a decision-relevant constraint and there is no filler or repetition.
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 state-setting tool with no output schema and sparse params, it covers the main usage pitfalls: cardinality limit, unique SVG requirement, and verbatim sections. It relies on external guide sections (§C1, §0) for wrapper and sourcing details, which is a minor completeness gap, but the core call contract is well specified.
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 and an additionalProperties entity object, the description is the only documentation of entity structure. It enumerates id, name, optional role/color/symbol_svg, and nested sections with {h,t}, and adds cardinality and value-sourcing rules. It does not explain timeline_id or h/t meaning, but the schema titles cover timeline_id and the guide references cover the rest.
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 opening verb 'Define' with the resource 'entity axis (the chips)' is specific, and the inline entity shape makes it unmistakably a setter for the chip/entity list rather than for axis values, nodes, or connections. This distinguishes it from siblings like set_axis_values and add_nodes without requiring the reader to open the schema.
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 gives strong operational guidance once selected (≤12 entities, unique symbol per entity, verbatim sections), but it never states when to prefer this over set_axis_values or other sibling tools, nor any exclusion condition. Usage context is implied by the tool name and entity-axis wording, not made explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_overviewSet overviewA
Optional prose overview panel (HTML paragraphs). Authored from the user's
material (§0). Deep-link a node with exactly
<a href="#" onclick="showDetail('node','<node-id>')">phrase</a> — at build
these become the engine's clickable overview chips. A link whose id is not a
live node is demoted to plain text with a build warning, so links are always
validated before anything ships.
| Name | Required | Description | Default |
|---|---|---|---|
| timeline_id | Yes | ||
| overview_html | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false; the description adds substantive behavior: exact deep-link syntax that becomes clickable chips at build, demotion of invalid node links to plain text with a build warning, and guaranteed validation before shipping. It does not discuss whether existing overview content is replaced, but 'set' implies that.
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?
Three dense sentences with no filler; the most important content type is front-loaded, and the link syntax is given exactly. The final clause about validation is slightly redundant with the preceding warning but adds a safety guarantee.
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?
The description is sufficient for the overview_html format and validation behavior, but omits overwrite semantics and any rationale for the required timeline_id. It also does not clarify whether 'optional' means the panel can be empty despite overview_html being required.
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 schema description coverage at 0%, the description must carry param semantics. It does this for overview_html by specifying HTML paragraphs and the exact link format, which the bare schema lacks. timeline_id is only inferable from its name and the tool name, so the compensation is incomplete.
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 identifies the tool as an 'Optional prose overview panel (HTML paragraphs)', which clearly states the resource and content type. It goes beyond the title 'Set overview' by explaining what the panel contains, though it never uses an explicit verb like 'sets/updates'. It distinguishes from sibling tools because none of them target the overview panel.
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 implies usage in the authoring workflow ('Authored from the user's material (§0)') and refers to build-time behavior, so an agent can infer when it applies. It does not explicitly state when to prefer this tool over siblings like build_timeline or add_nodes, nor provide when-not-to-use conditions.
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.
15 tool updates
v1.4.0- First observed
add_connections - First observed
add_nodes - First observed
build_timeline - First observed
create_project - First observed
create_timeline - First observed
delete_nodes - First observed
get_interview_guide - First observed
get_timeline - First observed
list_projects - First observed
publish_timeline - First observed
record_materials_consent - First observed
run_layout_preview - First observed
set_axis_values - First observed
set_entities - First observed
set_overview
TDQS
Scored across 15 tools
Each tool has a clearly distinct role in the pipeline: guide, project creation, timeline creation, consent, content authoring, layout preview, build, publish, and retrieval. Even the content-authoring tools are cleanly separated by target—entities, axes, nodes, connections, and overview—so an agent is unlikely to confuse them.
All tools follow a snake_case verb_noun pattern with predictable verbs like create, get, set, add, list, build, publish, and run. The naming convention is consistent and maps well to each tool's function.
Fifteen tools is at the upper end of the ideal range, but the domain is genuinely complex: project/timeline management, a consent gate, multiple entity/axis definitions, node/connection authoring, layout preview, build verification, and publishing all need dedicated surfaces. Each tool feels necessary rather than redundant.
The core workflow is fully covered: create project, create timeline, record consent, define entities/axes, add nodes/connections/overview, preview, build, publish, and resume via get_timeline or get_interview_guide. Minor gaps exist for lifecycle management—there is no explicit way to delete a whole project or timeline, or update the original create_timeline brief—but these do not block the main build-and-publish flow.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- DoneThatOAuthai.donethat
Privacy-first work tracking with summaries, reports, coaching, and AI-ready long-term memory.
Turn grounded AI answers into trusted comparisons, plans, timelines, and decision views.
Track, curate, and analyze data about your health, habits, and goals.
- repageOAuthapp.repage
Publish HTML & Markdown to shareable links with versions, comments, and project organization.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables managing personal information with dynamic topic-based organization (tasks, meetings, contacts, etc.), supporting optional OTP authentication and AES-256 encryption for sensitive data with automatic backups.106-
- AlicenseNot gradedqualityCmaintenanceEnables the creation of interactive schedule visualizations on rhylthyme.com featuring parallel tracks, dependencies, and resource constraints. Users can import recipes or protocols from external sources and define custom workspace environments to generate shareable timelines with live execution timers.MIT
- AlicenseAqualityDmaintenanceCaptures ideas from conversations and organizes them into a persistent, hierarchical mindmap. Supports search, deduplication, export, import, and cloud sync.137MIT
- FlicenseNot gradedqualityDmaintenanceEnables authors to manage characters, chapters, world settings, and plot lines for novel writing, with creative inspiration tools.1-
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/lukebmandel-debug/alto-connector'
If you have feedback or need assistance with the MCP directory API, please join our Discord server