@millwork/solver-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SOLVERAPI_API_KEY | Yes | Tenant API key held by the server process and sent as bearer authentication. | |
| SOLVERAPI_BASE_URL | Yes | API base including /v1; the production value is https://api.getmillwork.dev/v1. | |
| SOLVERAPI_MAX_RETRIES | No | Network/5xx retry limit. Default: 2. | 2 |
| SOLVERAPI_RETRY_BACKOFF_MS | No | Exponential-backoff base in milliseconds. Default: 500. | 500 |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| solver_list_sourcesA | List the model sources this tenant can connect (GET /v1/model-source-profiles). Every source runs on your provider key/account by construction: each entry carries its protocol/auth profile versions and endpoint policy. No credential material is involved. |
| solver_start_source_handoffA | Start a hosted browser credential handoff for a source (POST /v1/source-credential-handoffs). Returns a continue_url for a HUMAN to complete in a browser against the credential broker -- this tool never accepts or returns a raw key, service-account JSON, cloud secret, or token. Poll with solver_poll_source_handoff until state=completed, then pass the handoff_intent_id to solver_create_source_connection. |
| solver_poll_source_handoffA | Poll a credential handoff intent until the human completes it in the browser (GET /v1/source-credential-handoffs/{handoff_intent_id}). Answers the intent state only. |
| solver_create_source_connectionA | Bind a source connection for your provider key/account from a COMPLETED handoff intent (POST /v1/source-connections). Takes only the opaque handoff_intent_id -- never credential material. A fresh connection is disabled until solver_test_source_connection passes; deployments then come from solver_sync_source_deployments. |
| solver_test_source_connectionA | Run the live credential test on a source connection (POST /v1/source-connections/{id}/test). A passing test activates the connection; the wire reports test_state/test_error. |
| solver_list_source_connectionsA | List this tenant's source connections with their test/rotation state (GET /v1/source-connections). auth_binding_ref is an opaque broker handle, never a secret. |
| solver_sync_source_deploymentsA | Discover and persist the connection-authorized, certification-backed deployments (POST /v1/source-connections/{id}/deployments/sync). Requires an ACTIVE (tested) connection; answers the synced deployment set. Discovery is not certification: unevidenced identities are never persisted. |
| solver_list_model_deploymentsA | List the tenant's certification-backed model deployments (GET /v1/model-deployments). Enable one as an arm with solver_enable_model_arm. |
| solver_enable_model_armA | Enable a certification-backed model deployment as an arm (POST /v1/arms with kind=model and model_deployment_id). Use the catalog entry's secretless arm_registration_template values; claims wider than the certified template are rejected. |
| solver_register_armA | Register a model/agent/skill arm (POST /v1/arms). Returns the created arm, including its arm_id, status, and (for skill kind) artifact_hash. |
| solver_list_armsB | List the tenant's registered arms (GET /v1/arms). Returns { arms, next_cursor }. |
| solver_submitA | Submit a task for governed execution (POST /v1/executions). Requires a unique request ID via idempotency_key (sent as the Idempotency-Key header) -- an MCP client cannot construct a valid call without it. |
| solver_statusA | Poll an execution's lifecycle state (GET /v1/executions/{id}). |
| solver_cancelA | Cancel a running execution (POST /v1/executions/{id}/cancel). |
| solver_resultA | Fetch the retention-bound result of a COMPLETED execution (GET /v1/executions/{id}/result): the final text plus the winner attempt's model provenance (requested vs resolved identity) when one exists. |
| solver_receiptA | Fetch the receipt for an execution -- route rationale, per-slice evals, cost (GET /v1/receipts/{execution_id}). Content-free: never returns task output. |
| solver_proposalsA | List pending repair proposals, or inspect one when proposal_id is set (GET /v1/proposals[/{id}]). |
| solver_review_proposalB | Approve or reject a repair proposal (POST /v1/proposals/{id}/approve|reject); the decision parameter selects which. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Most tools map cleanly to distinct lifecycle stages: source handoff, connection testing, deployment sync, arm registration, execution submission, and proposal review. The main ambiguity is between solver_enable_model_arm and solver_register_arm, which both create arms, and between solver_list_source_connections and solver_list_sources because their names are very close.
All tool names share the solver_ prefix and consistently use snake_case with clear action/resource stems. Minor inconsistency comes from noun-style names like solver_proposals, solver_status, solver_result, and solver_receipt, which deviate from the verb_noun pattern used elsewhere.
18 tools is slightly above the typical 3-15 range, but the count is reasonable for a governed execution platform spanning source connections, credential handoffs, arms, executions, and proposals. There are no obvious redundant or filler tools.
The core workflow is well covered: connect a source, sync deployments, register arms, submit executions, poll status, fetch results/receipts, and review proposals. However, there are notable lifecycle gaps: no way to list executions, disconnect or delete a source connection, or disable/delete an arm.