Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MSTY_HOSTNoMsty installation host127.0.0.1
MSTY_AI_PORTNoLocal AI (Ollama) port11964
MSTY_TIMEOUTNoService timeout in seconds10
MSTY_MLX_PORTNoMLX service port11973
MSTY_VIBE_PORTNoVibe CLI Proxy port8317
ANTHROPIC_API_KEYNoRequired for Bloom judge model (Phase 6)
MSTY_LLAMACPP_PORTNoLLaMA.cpp service port11454

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_msty_installationA

Locate the Msty Studio app, version, database path and service ports on this machine. Use this before other Studio tools when you need paths or to confirm Studio is installed. Read-only. Returns a JSON object with installed, version, database and ports.

read_msty_databaseA

Run a read-only query against the Studio SQLite database. Use query=stats or query=tables for overviews, or a SELECT/WITH/PRAGMA statement. Do not use this to change data. Credential columns read as NULL. Returns JSON with query_type and either stats, a table list, or rows.

list_configured_toolsA

List MCP and Toolbox tools stored in Studio. Use this for Toolbox contents. Use list_studio_catalogue for entity counts across Studio. Read-only. Returns JSON with tools and tool_count.

get_model_providersA

List local inference backends and Studio-configured remote providers, with keys redacted. Use list_models when you only need model names. Use get_status with scope=services for port health only. Read-only. Returns JSON with services, local_models and remote_providers.

get_statusA

Report MCP server status, Studio install health, and local service ports in one tool. Use scope=server for this MCP process, scope=install for the Studio app and database, scope=services for Local AI/MLX/Llama.cpp/Vibe/Nexus ports, or scope=all for every section. Read-only. Returns JSON for the chosen scope.

export_tool_configA

Export one Studio Toolbox tool configuration by name, toolId or id. Use this to copy a config. Use import_tool_config to save a pack for Toolbox import. Read-only. Returns JSON with the tool config, or an error and available names.

sync_claude_preferencesA

Compare Claude Desktop MCP server names with tools already in Msty Toolbox. Use this for a delta report. It does not write to Studio. Import missing tools with import_tool_config. Read-only. Returns JSON with claude_servers, msty_tools and a note that writes stay user-confirmed.

generate_personaA

Build a persona JSON pack and, when gated, insert it into Studio SQLite. Use this to create a persona. Use import_studio_pack for a full pack. Always writes a pack under ~/.msty-admin/imports/. SQLite insert needs confirm=true, MSTY_ALLOW_STUDIO_WRITES=1 in the server environment, and Studio must be closed. Name max 100 characters, system prompt max 20000. Returns JSON with pack_path and wrote.

import_tool_configA

Save a Toolbox tool config as a JSON pack. Never writes the Studio database. Use this for tools. Use import_studio_pack for personas, prompts, skills and toolsets. Configs with command, args or env are flagged as running a program on your machine and stay pack-only. Returns JSON with pack_path, wrote=false, and launch_risk when present.

import_studio_packA

Save a Studio pack as JSON. Tools, toolsets and skills stay pack-only. Personas and prompts insert only with confirm=true and MSTY_ALLOW_STUDIO_WRITES=1, after a backup, and only when Studio is closed. Use generate_persona for a single persona. Length caps apply (name/title 100, description 500, prompt 20000). Returns JSON with pack_path, wrote, status and any error.

list_modelsA

List models on a local backend. Use backend=all for every service, or local_ai, mlx, llamacpp, vibe or nexus. Use chat_with_model to talk to a listed model. Read-only aside from local HTTP. Returns JSON with backend and models, or an error when that service is down.

query_local_ai_serviceA

Call the Local AI (Ollama-compatible) HTTP API on an allow-list of read and chat paths. Use install_model to pull and set_model_settings to create a variant. Pull and create are refused here. Talks to the local network. Returns JSON with the API body or an allow-list error.

chat_with_modelA

Send a chat completion to a local model on Local AI, MLX or Llama.cpp. Use list_models first if you need names. Use ask_frontier for a cloud model. Calls the local OpenAI-compatible /v1/chat/completions endpoint. Not read-only. Returns the backend JSON or an error when the service is down.

get_hardware_profileA

Read chip, CPU cores, RAM, GPU/VRAM and Apple Silicon generation for model sizing. Use recommend_model to turn this into a model pick. Read-only. Returns JSON hardware fields.

recommend_modelA

Recommend a local model from hardware fit, then 30-day Studio usage when it still fits. Use get_hardware_profile for the raw numbers. Use install_model to pull the pick. Read-only. Returns JSON with the recommendation and a hardware summary.

install_modelA

Pull a model through Local AI (Ollama-compatible /api/pull). Use recommend_model to pick a size. MLX and Llama.cpp have no pull API here. Only bare Ollama names (registry.ollama.ai) and hf.co/ paths are allowed. Needs confirm=true to write. Returns JSON with wrote, model and any error.

set_model_settingsA

Create a tuned Ollama variant via /api/create from an installed base model. Use install_model first if the base is missing. Does not overwrite an existing name. Needs confirm=true to write. Returns JSON with wrote, variant and a Modelfile preview.

get_vibe_proxy_statusA

Check whether the Vibe CLI proxy port is up. Use query_vibe_proxy to send a query. Local HTTP. Returns JSON status or unavailable.

query_vibe_proxyA

Send a query to the Vibe CLI proxy. Use get_vibe_proxy_status first if you only need liveness. Local HTTP POST. Returns the proxy JSON or an error when the proxy is down.

get_model_performance_metricsA

Read token, latency and call counts from Studio insightsLanguageModelUsage. Use get_insights_usage as the same data under a shorter name. Use get_conversation_patterns for chat shape. Read-only. Returns JSON totals and per-model rows.

get_conversation_patternsA

Summarise conversation patterns from Studio data for one model or all models. Use get_model_performance_metrics for speed and token counts. Read-only. Returns JSON pattern stats.

compare_model_responsesA

Send the same prompt to several Local AI models and compare latency and a preview of each reply. Use chat_with_model for a full conversation with one model. Calls local inference. Returns JSON with comparisons. Best-effort if a model is cold.

optimise_knowledge_stacksA

Suggest Knowledge Stack changes from live Studio Next Gen, draft and compose status. Does not edit stacks. Use list_knowledge_stacks to browse them. Read-only. Returns JSON suggestions.

suggest_persona_improvementsA

Suggest persona edits from live Studio personas. Does not write personas. Use generate_persona to create one. Read-only. Returns JSON suggestions.

run_calibration_testA

Run heuristic calibration prompts against a Local AI model and store scores in ~/.msty-admin. Use evaluate_response_quality to score a single reply without calling the model. Calls local inference and writes sidecar metrics. Returns JSON with tests_run and average_score.

evaluate_response_qualityA

Score a prompt and reply with a local heuristic rubric. Does not call a model. Use run_calibration_test to generate replies first. Read-only. Returns JSON with quality_score, passed and criteria.

identify_handoff_triggersA

Flag models that look slow or low-throughput from 30-day Studio insights. This only reports. Use escalate_if_needed or ask_frontier to send a question to the cloud. Read-only. Returns JSON triggers and hook_api.

escalate_if_neededA

Send a hard question to Cursor, Grok or Claude via the Frontier helper. Use ask_frontier for the same call without a reason field. Use identify_handoff_triggers to decide whether to escalate. Calls the network. Needs the matching API key. Returns JSON with escalated, answer and hook_api.

get_calibration_historyA

Read calibration scores from the sidecar metrics database under ~/.msty-admin. Use run_calibration_test to add rows. Read-only. Returns JSON history rows.

bloom_evaluate_modelA

Run a Bloom behavioural evaluation on a local model. Never invents a score. Needs ANTHROPIC_API_KEY and a Bloom checkout. Use bloom_validate_model first. Calls the network. Returns JSON with quality_score or an honest error and quality_score null.

bloom_check_handoffA

Decide from Bloom history whether a model should hand off a task category. Does not call Bloom. Use bloom_evaluate_model to add history. Read-only. Returns JSON handoff advice.

bloom_get_historyA

Read persisted Bloom evaluation rows from ~/.msty-admin/bloom-history.json. Use bloom_evaluate_model to add rows. Read-only. Returns JSON evaluations.

bloom_list_behaviorsA

List Bloom behaviours this server can evaluate. Use bloom_evaluate_model with one of these ids. Read-only. Returns JSON behaviors and count.

bloom_get_thresholdsA

Read quality thresholds and handoff triggers for a task category. Use bloom_check_handoff to apply them to history. Read-only. Returns JSON thresholds.

bloom_validate_modelA

Check whether a local Ollama model is reachable and suitable for Bloom. Use this before bloom_evaluate_model. Local HTTP. Returns JSON validation fields.

list_studio_catalogueA

Return row counts for every known Studio entity type. Use a specific list_* tool for the rows themselves. Read-only. Returns JSON counts.

list_workspacesA

List Studio workspaces. Use get_studio_entity with entity=workspaces for one workspace, and list_studio_catalogue for counts. Read-only. Returns JSON items up to limit.

list_personasA

List personas from Persona Studio. Use generate_persona to create one, list_shadow_personas for Shadow Personas, and get_studio_entity for one row. Read-only. Returns JSON items up to limit.

list_shadow_personasA

List Shadow Personas, which are variants of ordinary personas. Use list_personas for the main Persona Studio list, and get_studio_entity for one row. Read-only. Returns JSON items up to limit.

list_crewsA

List Crew Mode crews from Studio. Use get_studio_entity with entity=crews for one crew, and list_personas for members. Read-only. Returns JSON items up to limit.

list_knowledge_stacksA

List Knowledge Stacks, including Next Gen stacks. Use optimise_knowledge_stacks for suggestions, and get_studio_entity for one stack. Read-only. Returns JSON items up to limit.

list_turnstilesA

List Turnstile and Turnstiles vNext routing definitions from Studio. Use get_studio_entity with entity=turnstiles for one row, and list_studio_catalogue for counts. Read-only. Returns JSON items up to limit.

list_skillsA

List Skills Studio preferences and folders. Skills are imported as JSON packs, not SQLite inserts. Read-only. Returns JSON skills and folders.

list_live_contextsA

List Live Contexts that Studio injects into chats. Use list_context_studio for attachment files, and get_studio_entity for one row. Read-only. Returns JSON items up to limit.

list_promptsA

List Prompts Studio library entries. Use import_studio_pack to add prompts, and get_studio_entity for one row. Read-only. Returns JSON items up to limit.

list_context_studioA

List Context Studio attachments and their folders. Use list_live_contexts for Live Context rows, and get_studio_entity for one attachment. Read-only. Returns JSON attachments and folders up to limit.

list_agent_plansA

List Agent Mode plans stored in Studio. Use get_studio_entity with entity=agent_plans for one plan, and list_crews for Crew Mode. Read-only. Returns JSON items up to limit.

get_studio_entityA

Fetch one Studio entity by catalogue type and id. Use the matching list_* tool to discover ids. Plural keys are canonical. Singular aliases are accepted. Read-only. Returns JSON item or the allowed type list.

get_schema_migrationsA

Show recent Drizzle schema migrations from the Studio database. Use get_msty_installation for the app version. Read-only. Returns JSON migrations.

export_workflow_packA

Export a read-only workflow pack of personas, tools, turnstiles and stacks. Does not write Studio. Use import_studio_pack to bring a pack back in. Returns JSON pack.

get_nexusA

Detect the Msty Nexus local gateway and its port. Use list_models with backend=nexus for model names. Local HTTP. Returns JSON found, endpoint and port.

query_nexusB

Call the Nexus OpenAI-compatible gateway with a path. Use list_models with backend=nexus for model names. Local HTTP. Returns the gateway JSON or an error.

get_insights_usageA

Read Studio insights usage for one model or all models. Same data as get_model_performance_metrics. Read-only. Returns JSON totals and models.

ask_frontierA

Send one hard question to Cursor (default), Grok or Claude and return the answer. Stay as this one tool. Use escalate_if_needed when you also want a reason field. Calls the network. Needs the matching API key. Call once, then stop. Returns the answer text.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.4/5.0

Scored across 61 tools

Disambiguation3/5

Most tools have clearly distinct targets (the list_* family per Studio entity type is clean), but there are several overlapping clusters: status/diagnostic tools (get_service_status, get_server_status, analyse_msty_health, detect_msty_installation) and analytics tools (get_insights_usage, get_model_performance_metrics, analyse_conversation_patterns) are easy to confuse. There are also near-duplicates: escalate_if_needed explicitly just calls ask_frontier, and get_insights_usage is an 'alias' for insights analytics.

Naming Consistency4/5

Tools overwhelmingly follow a snake_case verb_noun pattern (list_*, get_*, query_*, chat_with_*, export_*/import_*) with consistent domain prefixes (bloom_*, chat_with_*). Minor deviations exist: bloom_list_behaviors uses list without a get_, spelling mixes British (analyse/optimise) with expected conventions, but it remains predictable overall.

Tool Count2/5

At 61 tools the surface is very heavy for a single admin server, far above the 3-15 sweet spot. While the scope is broad (Studio admin, local models, Bloom, Nexus), the count is inflated by many overlapping status and analytics tools that could be consolidated.

Completeness3/5

Read/discovery coverage is excellent — nearly every Studio entity type has a list_ tool plus get_studio_entity and list_studio_catalogue. However write coverage is thin and gated: entities appear only creatable via pack import with confirm/allow flags, with no explicit create/update/delete tools for personas, crews, workspaces, etc., leaving lifecycle gaps for an admin tool.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive