Alto Connector
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ALTO_FIREBASE_BIN | No | Path to firebase CLI binary | |
| ALTO_FIREBASE_SITE | No | Firebase Hosting site for publishing timelines | |
| ALTO_FIREBASE_CONFIG | No | Firebase web config JSON object | |
| ALTO_FIREBASE_PROJECT | No | Firebase project id |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_interview_guideA | 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. |
| list_projectsA | List the user's Alto projects and the timelines inside them. |
| create_projectA | Create a project container (Flow 1). kind: studying|writing|research. Name + purpose only — Alto never stores generated blurbs. |
| create_timelineA | 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 |
| record_materials_consentA | 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. |
| set_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). |
| set_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
§0: |
| add_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.
|
| add_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). |
| set_overviewA | Optional prose overview panel (HTML paragraphs). Authored from the user's
material (§0). Deep-link a node with exactly
|
| run_layout_previewA | Cheap layout dry-run: resolves columns + vertical positions and reports world height, per-column balance, and warnings — iterate here before build_timeline. |
| build_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. |
| publish_timelineA | Publish the built timeline. visibility: 'private' (only the signed-in owner) or 'link' (anyone with the URL). Returns view + offline-download URLs. |
| get_timelineA | Full draft state for resuming: brief, consent, node ids, connection count, status, urls. |
| delete_nodesA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| alto_interview | Run the Alto new-project / new-timeline interview. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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