solodot-mcp
Provides durable storage for runs in remote HTTP mode.
Click on "Deploy 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., "@solodot-mcproute my biggest painpoint this week"
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.
solodot-mcp
connect the dots that scale your solo business.
mcp server for solodot. route the active founder painpoint, generate one execution asset, and keep the founder in control through approve, revise, or reject.
features
six execution packs: bottleneck, customers, founder functions, learning, trust, and agent workflows.
five tools: route, generate, review, inspect, and export.
local stdio for codex and claude desktop.
authenticated streamable http for remote agents.
anthropic and vertex model providers.
in-memory local runs or durable supabase runs.
docker and apple container support.
no silent email, slack, crm, publishing, invoice, or external actions.
Related MCP server: mmc-mcp
requirements
node.js 20+
an anthropic or vertex api key
supabase for remote http mode
codex, claude, or another mcp client
apple container requires apple silicon and macos 26. install it from the official releases, then start the service with container system start.
install
cd /Users/0x79de/dev/solodot-mcp
npm install
cp .env.example .env
npm run buildset at least one provider in .env:
SOLODOT_DEFAULT_PROVIDER=anthropic
ANTHROPIC_API_KEY=...use SOLODOT_DEFAULT_PROVIDER=vertex with VERTEX_API_KEY for vertex.
setup
codex
add a local stdio server to ~/.codex/config.toml:
[mcp_servers.solodot]
command = "node"
args = ["/Users/0x79de/dev/solodot-mcp/dist/stdio.js"]
env = { SOLODOT_DEFAULT_PROVIDER = "anthropic", ANTHROPIC_API_KEY = "your-key" }claude desktop
add this to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"solodot": {
"command": "node",
"args": ["/Users/0x79de/dev/solodot-mcp/dist/stdio.js"],
"env": {
"SOLODOT_DEFAULT_PROVIDER": "anthropic",
"ANTHROPIC_API_KEY": "your-key"
}
}
}
}restart the client after changing its config. ready-to-copy examples live in examples/.
usage
after setup, ask your agent:
"route the biggest painpoint in my solo business."
"turn this route into the execution asset i should use this week."
"revise the asset for a narrower b2b saas buyer."
"approve it and export the run as markdown."
the normal flow is:
route_painpoint
-> generate_execution_asset
-> review_execution_asset
-> export_solodot_runapproval records founder intent. it never executes the asset outside solodot.
remote http
remote mode serves POST /mcp and GET /health on port 8787.
configure:
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SECRET_KEY=...
SOLODOT_MCP_API_KEYS=long-random-founder-token
ANTHROPIC_API_KEY=...run:
npm run build
npm run start:httpremote codex config:
[mcp_servers.solodot]
url = "https://mcp.example.com/mcp"
bearer_token_env_var = "SOLODOT_MCP_TOKEN"use the same public https endpoint and bearer token for a claude custom connector or another remote mcp host.
apple container
solodot uses the same oci image for apple container and docker.
container system start
npm run container:build
npm run container:runcontainer:run reads .env, starts solodot-mcp with an init process, and publishes only 127.0.0.1:8787.
npm run container:health
npm run container:logs
npm run container:stopoverride defaults when needed:
SOLODOT_MCP_ENV_FILE=/absolute/path/to/solodot.env \
SOLODOT_MCP_PORT=9000 \
npm run container:runapple container runs linux containers as lightweight virtual machines on apple silicon. the image remains portable to any oci-compatible runtime.
docker
build from the standalone mcp repository:
cd /Users/0x79de/dev/solodot-mcp
docker build -t solodot-mcp:local .
docker run --init --rm --env-file .env -p 127.0.0.1:8787:8787 solodot-mcp:localtools
route_painpoint: choose exactly one execution pack.generate_execution_asset: create the full asset for that fixed route.review_execution_asset: approve, revise, or reject.get_solodot_run: inspect diagnosis, assets, and approvals.export_solodot_run: return an approved asset as markdown or json.
resources are available at solodot://execution-packs, solodot://approval-boundaries, and solodot://product-context.
slack
an mcp-capable agent can call solodot while its conversation lives in slack.
this is not a native slack bot. it does not read channels, receive slash commands, or post messages.
development
npm run typecheck
npm test
npm run buildinspect the local server:
npx @modelcontextprotocol/inspector node dist/stdio.jslinks
Available Tools
5 toolsexport_solodot_runExport an approved Solodot runARead-onlyIdempotent
Return an approved execution asset as Markdown or JSON. The tool returns content only; it does not write files, post messages, or publish.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | ||
| format | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by clarifying the tool returns content only and does not write files or publish, reinforcing the annotations. It does not cover error cases like unapproved runs, but overall it aids understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant information. The first sentence states core purpose, and the second adds behavioral clarification. It is front-loaded and efficient, earning a high score.
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 tool with good annotations and two parameters, the description is adequate but not fully complete. It lacks details about error conditions (e.g., unapproved run) and return structure, which could be helpful given no output schema.
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%. The description mentions output formats ('Markdown or JSON'), which hints at the format parameter, but does not describe runId or provide additional meaning for either parameter. The schema itself provides basic info, but the description adds minimal parameter guidance.
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 an approved execution asset in Markdown or JSON format. The verb 'Return' and resource 'approved execution asset' are specific. It implicitly distinguishes from siblings like generate_execution_asset by focusing on export of an already approved asset.
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 for exporting approved runs but does not explicitly compare with siblings or provide when-not-to-use guidance. The context is clear but lacks direct alternative differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_execution_assetGenerate the routed execution assetA
Generate one concrete, preview-only execution asset for the pack already selected by route_painpoint. The routed pack cannot be changed by this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | ||
| corrections | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds that the asset is 'preview-only' and that the pack cannot be changed, which provides useful but limited further context about side effects. No mention of auth or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the core purpose. Every sentence adds value without fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 parameters and no output schema. The description states the pack is selected by route_painpoint, but does not describe the output format, what corrections are for, or what to do after generation. Given the complexity, more context would be helpful.
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 schema provides no parameter documentation. The tool description does not explain the meaning or usage of 'runId' or 'corrections' beyond what the schema defines (e.g., lengths). This forces the agent to infer parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a preview-only execution asset for a pack selected by route_painpoint, using specific verbs and resources. It distinguishes itself from sibling tools like route_painpoint (selection) and review_execution_asset (review).
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 specifies that this tool should be used after route_painpoint and that the pack cannot be changed, providing clear context. However, it lacks explicit guidance on when not to use it or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_solodot_runInspect a Solodot runARead-onlyIdempotent
Return the authenticated founder's diagnosis, generated assets, approval history, and latest recommended step.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by detailing what the tool returns (diagnosis, assets, approval history, latest step), providing context beyond 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 description is a single, focused sentence with no unnecessary words. It efficiently conveys the tool's purpose and output.
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 retrieval tool with one parameter and no output schema, the description adequately explains what data is returned. However, it lacks edge case information (e.g., error handling, null fields) and does not mention return format.
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 tool description does not explain the 'runId' parameter. The agent must infer its purpose from the name alone, which is insufficient for a required parameter.
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 specifies the verb 'return' and the resource 'Solodot run', and lists the specific data returned (diagnosis, assets, approval history, latest step). This distinguishes it from siblings like export_solodot_run or generate_execution_asset.
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 explicit guidance on when to use this tool versus alternatives. The description implies it's for inspecting a run, but does not state when not to use it or mention sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_execution_assetReview an execution assetA
Record approve, revise, or reject for a generated Solodot asset. Approval records acceptance only and never executes the asset externally.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | ||
| reason | No | ||
| assetId | Yes | ||
| decision | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only, not idempotent, and not destructive. The description adds transparency by specifying that approval 'never executes the asset externally,' providing important behavioral context beyond 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 description is two sentences, directly states purpose and a key constraint, with no redundant or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides core purpose and a behavioral constraint, but lacks explanation of parameters and return values. With 4 parameters and no output schema, additional detail would improve completeness.
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 compensate. However, it does not explain what runId or assetId refer to, nor does it describe the allowed decision values beyond naming the enum. The optional reason parameter is not mentioned.
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 records approve, revise, or reject decisions for a generated Solodot asset, and emphasizes that approval is only acceptance, not external execution. This distinguishes it from sibling tools like generate_execution_asset or export_solodot_run.
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 when to use the tool (to review an asset) and clarifies a key constraint (no external execution), but does not explicitly contrast with alternatives or 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.
route_painpointRoute a founder painpointB
Diagnose the active solo-founder painpoint, select exactly one Solodot execution pack, and return a lightweight action preview. This does not perform external actions.
| Name | Required | Description | Default |
|---|---|---|---|
| offer | Yes | ||
| stage | Yes | ||
| provider | No | ||
| bottleneck | Yes | ||
| founderType | Yes | ||
| trustBlocker | No | ||
| recentAttempt | Yes | ||
| customerContext | No | ||
| weeklyConstraint | Yes | ||
| criticalAssumption | No | ||
| validationEvidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the behavioral trait 'this does not perform external actions,' which clarifies its read-only nature beyond the annotations (destructiveHint=false). This is valuable context, though additional details (e.g., what triggers a pack selection, potential errors) are omitted.
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 concise sentences: the first defines the core action, the second adds a crucial caveat. No filler or redundant content. Front-loaded with the primary function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, 6 required, no output schema), the description is severely incomplete. It does not explain what a 'lightweight action preview' is, how the pack is selected, or what the return value contains. The agent has insufficient information to effectively invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description provides no explanation of any of the 11 parameters (6 required). The parameters (offer, stage, bottleneck, etc.) are not described, leaving the agent with no semantic understanding beyond their names. This is a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: diagnose a solo-founder painpoint, select a Solodot execution pack, and return a lightweight action preview. It distinguishes itself from sibling tools (export, generate, get, review) by focusing on routing and diagnosis.
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 mentions the tool does not perform external actions, which indirectly guides when to use it (for non-execution tasks). However, it lacks explicit guidance on when not to use it compared to siblings or alternative approaches. No usage context or exclusion criteria are provided.
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.
5 tool updates
v0.1.0- First observed
export_solodot_run - First observed
generate_execution_asset - First observed
get_solodot_run - First observed
review_execution_asset - First observed
route_painpoint
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: route_painpoint diagnoses and selects a pack, generate_execution_asset creates a preview asset, review_execution_asset records approval/revision/rejection, export_solodot_run returns the approved asset, and get_solodot_run retrieves the current state. No two tools overlap in functionality.
All tool names follow a consistent verb_noun pattern using snake_case: route_painpoint, generate_execution_asset, review_execution_asset, export_solodot_run, get_solodot_run. The verbs are distinct and the nouns are domain-specific, making the pattern predictable and clear.
With 5 tools, the server is well-scoped for the solo founder painpoint workflow. Each tool represents a key step in the process (diagnosis, generation, review, export, status retrieval) without unnecessary duplication or omission.
The tool set covers the core lifecycle: route_painpoint starts, generate_execution_asset creates, review_execution_asset evaluates, export_solodot_run delivers, and get_solodot_run provides status. A minor gap is the lack of a tool to update or delete assets or runs, but the workflow is essentially complete for a linear process.
Maintenance
Related MCP Connectors
MCP server for VC pitch-deck scoring, thesis-fit matching, and deal-flow management.
MCP server for generating rough-draft project plans from natural-language prompts.
Personal MCP server for humans who create. Proof of authorship, license control.
Hosted MCP server for AI agent identity, permissions, verification, and reusable proof.
Related MCP Servers
- AlicenseAqualityDmaintenanceAI co-founder MCP server for solo founders. Multi-perspective code review (CTO, Security, Product, DevOps, Customer), stage-aware guidance, tech decision validation, and portfolio management across projects.1611 npm3MIT

mmc-mcpofficial
FlicenseNot gradedqualityDmaintenanceMCP server that lets AI agents execute structured business processes by exposing process steps as tools with a sequenced event bus to prevent skipping steps.1-- AlicenseNot gradedqualityDmaintenanceMCP server for qualifying and responding to inbound leads in seconds using a multi-agent AI pipeline.1MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that routes tasks to the best AI models, aggregates responses with confidence scoring, and applies billionaire thinking frameworks for strategic decisions.-