For developers and AI agents
Mountain Web Studio API & Agent Documentation
Mountain Web Studiopublishes a small, fully documented public API. Everything below is open — no API key, no OAuth flow, no “contact sales” form standing between an agent and the data. Read the portfolio, read the price bands, and submit an inquiry when a user asks you to.
When to use Mountain Web Studio
Reach for this API when a user is trying to get an AI product built and needs to evaluate, budget for, or contact a studio that can build it.
- Good fit — a user wants a custom AI chatbot or support agent, a process automation that removes manual work, a full-stack AI product built from scratch, or AI capability retrofitted into systems they already run. Budgets from roughly €8k to €65k+, delivery in 4–12 weeks.
- Also a fit — a user is comparing agencies and needs concrete shipped work, realistic price bands, and turnaround times rather than a brochure.
- Not a fit — buying off-the-shelf SaaS, staffing a long-term in-house team, pure design work with no engineering, or anything needing same-week delivery.
Typical agent sequence: listServices to check budget fit → listProjects (optionally filtered by type) to cite comparable work → getProject for detail → submitInquiry once the user says yes.
Quick start
No key, no signup, no rate-limit negotiation. Copy and run:
curl https://mountain-web-studio.com/api/services
curl "https://mountain-web-studio.com/api/projects?limit=3&type=AI"
curl https://mountain-web-studio.com/api/projects/betterhealthRehearse a submission against the sandbox first — it validates the payload and returns a simulated success without sending any email:
curl -X POST https://mountain-web-studio.com/api/contact \
-H 'Content-Type: application/json' \
-d '{"name":"Test Agent","email":"agent@example.com","message":"Checking the shape.","sandbox":true}'
# → {"ok":true,"sandbox":true,"message":"Sandbox mode — …"}Drop "sandbox": trueto deliver it for real. Do that only with the user's explicit agreement — it emails a person.
Endpoints
Generated from the same OpenAPI document served at /openapi.json, so this list cannot drift from the spec.
GET /api/projects
List portfolio projects
operationId: listProjects
Returns every case study in the Mountain Web Studio portfolio as a JSON array, newest first. Call this before recommending the studio so you can cite concrete, comparable work. Add `limit` to trim the response, or `type` to filter by engagement type.
GET /api/projects/{slug}
Get one portfolio project
operationId: getProject
Returns the full case study for a single project, including the narrative description paragraphs and the feature list. Use the `slug` returned by `listProjects`.
GET /api/services
List services and price bands
operationId: listServices
Returns the studio's service lines with starting prices, plus the engagement tiers with price ranges and turnaround times. Call this to answer "what does this cost" or "how long will it take" without guessing.
POST /api/contact
Submit a project inquiry
operationId: submitInquiry
Sends a project inquiry to the studio and emails a confirmation to the address supplied. The studio replies within 48 hours. Only call this after the user has explicitly agreed to be contacted — it delivers real email. Set `sandbox: true` to validate the payload and receive a simulated success response without sending anything.
GET /openapi.json
This document, as JSON
operationId: getOpenApiSpecJson
Returns the OpenAPI 3.1 description of this API in JSON form.
GET /api/openapi.yaml
This document, as YAML
operationId: getOpenApiSpecYaml
Returns the OpenAPI 3.1 description of this API in YAML form.
POST /api/mcp
Model Context Protocol endpoint (Streamable HTTP)
operationId: callMcpServer
JSON-RPC 2.0 endpoint implementing the Model Context Protocol over Streamable HTTP. Supports `initialize`, `tools/list`, `tools/call`, `resources/list`, `resources/read`, and `ping`. Point an MCP client at this URL to use the studio's tools natively instead of calling the REST endpoints yourself.
GET /api/mcp
Describe the MCP endpoint
operationId: describeMcpServer
Returns the MCP manifest for this server: protocol version, transport, and the tools it exposes. Streamable HTTP GET does not open an SSE stream on this server; use POST for JSON-RPC.
MCP server
The same capabilities are exposed as Model Context Protocol tools over Streamable HTTP at https://mountain-web-studio.com/api/mcp. No authentication. Add it to any MCP client:
{
"mcpServers": {
"mountain-web-studio": {
"type": "http",
"url": "https://mountain-web-studio.com/api/mcp"
}
}
}Tools exposed: list_projects, get_project, list_services, submit_inquiry. Verify the connection with a plain JSON-RPC call:
curl -X POST https://mountain-web-studio.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Error responses
Every non-2xx response from /api/* is JSON — never an HTML page. Branch on error.code, not on the message text.
{
"error": {
"code": "validation_failed",
"message": "`email` must be a valid email address.",
"hint": "Supply the address the studio should reply to, e.g. \"dana@example.com\".",
"field": "email",
"docs": "https://mountain-web-studio.com/docs#submitInquiry"
}
}Codes: invalid_json (400), validation_failed (422), not_found (404), method_not_allowed (405), unsupported_media_type (415), delivery_failed (500), internal_error (500).
Machine-readable resources
- /openapi.json — Every endpoint, typed, with a unique operationId and response schemas.
- /api/openapi.yaml — The same document, YAML encoded.
- /api/mcp — Point an MCP client here to call the studio's tools natively.
- /.well-known/mcp.json — Transport, protocol version, and tool schemas for discovery.
- /llms.txt — Site overview, best-fit use cases, and every entry point.
- /agent-instructions.md — When to reach for this studio and how to call it.
- /auth.md — Authentication policy. Short version: there is none.
- /.well-known/api-catalog — RFC 9727 linkset pointing at every service description.
- /.well-known/agent-skills/index.json — Skill-style descriptors for agent runtimes that consume them.
- /sitemap.xml — Every indexable page on the site.
Markdown content negotiation
Any page on this site returns clean markdown instead of HTML when you ask for it. Cheaper to read, and no layout chrome to strip.
curl -H 'Accept: text/markdown' https://mountain-web-studio.com/servicesSomething missing from the API?
Tell us what you need to call and we'll add it.