{"openapi":"3.1.0","info":{"title":"Soham Chaudhari API","version":"1.0.0","summary":"Read-only data about Soham Chaudhari: profile, projects, live demos and freelance solutions.","description":"Public JSON API for Soham Chaudhari, an AI Engineer in Mumbai, India who builds AI products and freelance software solutions for businesses.\n\nUse it to look up the profile, portfolio projects with case studies, live AI demos, and the solutions available for clients (AI chatbots, AI-powered CRM, ERP, voice agents, automation, websites and more).\n\nNo authentication. Read-only: every operation is a GET except the MCP endpoint. Responses are cached for up to an hour.\nErrors always return JSON: `{ \"error\": { \"code\", \"message\", \"hint\", \"docs\" } }`.","contact":{"name":"Soham Chaudhari","email":"sohamrc08@gmail.com","url":"https://services.sohamchaudhari.in"},"x-guidance":"Call listSolutions to see what can be built for a business, then getSolution for details. Call getProfile and listProjects to answer questions about the builder. To start a project, email the contact address."},"servers":[{"url":"https://services.sohamchaudhari.in","description":"Freelance solutions site"},{"url":"https://sohamchaudhari.in","description":"Portfolio site"}],"externalDocs":{"description":"Guide for AI agents (llms.txt)","url":"https://services.sohamchaudhari.in/llms.txt"},"tags":[{"name":"Solutions","description":"Freelance solutions that can be built for a business."},{"name":"Profile","description":"Who builds them."},{"name":"Projects","description":"Portfolio projects and case studies."},{"name":"Demos","description":"Live AI demos."},{"name":"MCP","description":"Model Context Protocol server with the same data as tools."}],"paths":{"/api/v1/solutions":{"get":{"operationId":"listSolutions","summary":"List solutions","description":"Lists every solution that can be built for a business, such as AI chatbots, AI-powered CRM, ERP systems, voice agents and immersive websites. Filter by category.","tags":["Solutions"],"parameters":[{"name":"category","in":"query","required":false,"description":"Only return solutions in this category.","schema":{"type":"string","enum":["AI assistants","Business systems","Automation","Websites & products","Vision & media"]}}],"responses":{"200":{"description":"Solutions, optionally filtered by category.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SolutionList"}}}},"400":{"$ref":"#/components/responses/InvalidParameter"},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}},"x-read-only":true}},"/api/v1/solutions/{slug}":{"get":{"operationId":"getSolution","summary":"Get a solution","description":"Full details of one solution: the problem it solves, what gets built, the business impact, suitable industries and how to enquire.","tags":["Solutions"],"parameters":[{"name":"slug","in":"path","required":true,"description":"Solution slug, as returned by the list endpoint.","schema":{"type":"string","pattern":"^[a-z0-9-]+$","examples":["ai-chatbot","ai-crm","erp"]}}],"responses":{"200":{"description":"The solution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Solution"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}},"x-read-only":true}},"/api/v1/profile":{"get":{"operationId":"getProfile","summary":"Get profile","description":"Profile of Soham Chaudhari: role, company, location, time zone, contact email and links.","tags":["Profile"],"responses":{"200":{"description":"The profile.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Profile"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}},"x-read-only":true}},"/api/v1/projects":{"get":{"operationId":"listProjects","summary":"List projects","description":"Lists every portfolio project with links to source code, live demos and case studies.","tags":["Projects"],"responses":{"200":{"description":"All projects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectList"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}},"x-read-only":true}},"/api/v1/projects/{slug}":{"get":{"operationId":"getProject","summary":"Get a project","description":"One project, including its full case study (overview, features, how it works, stack) when one exists.","tags":["Projects"],"parameters":[{"name":"slug","in":"path","required":true,"description":"Project slug, as returned by the list endpoint.","schema":{"type":"string","pattern":"^[a-z0-9-]+$","examples":["gpts","ai-agents","stock-ai"]}}],"responses":{"200":{"description":"The project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}},"x-read-only":true}},"/api/v1/demos":{"get":{"operationId":"listDemos","summary":"List live demos","description":"Live AI demos that can be tried in a browser, with what each one runs on.","tags":["Demos"],"responses":{"200":{"description":"All demos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoList"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}},"x-read-only":true}},"/mcp":{"post":{"operationId":"callMcp","summary":"MCP server (JSON-RPC 2.0)","description":"Model Context Protocol server over Streamable HTTP, stateless, JSON responses. Supports initialize, ping, tools/list and tools/call. Add this URL as a remote MCP server in an MCP client instead of calling it by hand.","tags":["MCP"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcRequest"}}}},"responses":{"200":{"description":"JSON-RPC response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"202":{"description":"Accepted (notification, no response body)."},"400":{"description":"Parse error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"429":{"description":"Rate limit exceeded (60 requests per minute per IP).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","hint","docs"],"properties":{"code":{"type":"string","enum":["not_found","invalid_parameter","method_not_allowed"],"description":"Stable machine-readable code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"How to fix the request."},"docs":{"type":"string","format":"uri","description":"Link to this document."}}}}},"SolutionSummary":{"type":"object","required":["slug","title","category","tagline","url"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"category":{"type":"string","enum":["AI assistants","Business systems","Automation","Websites & products","Vision & media"]},"tagline":{"type":"string","description":"The business outcome in one line."},"url":{"type":"string","format":"uri","description":"Web page for the solution."}}},"SolutionList":{"type":"object","required":["categories","solutions"],"properties":{"categories":{"type":"array","items":{"type":"string","enum":["AI assistants","Business systems","Automation","Websites & products","Vision & media"]}},"solutions":{"type":"array","items":{"$ref":"#/components/schemas/SolutionSummary"}}}},"Solution":{"allOf":[{"$ref":"#/components/schemas/SolutionSummary"},{"type":"object","required":["problem","features","impact","industries","video","enquire"],"properties":{"problem":{"type":"string"},"features":{"type":"array","items":{"type":"string"},"description":"What gets built."},"impact":{"type":"array","items":{"type":"string"},"description":"What changes for the business."},"industries":{"type":"array","items":{"type":"string"},"description":"Industries it suits."},"video":{"oneOf":[{"type":"null"},{"type":"object","required":["src","poster"],"properties":{"src":{"type":"string","format":"uri"},"poster":{"type":"string","format":"uri"}}}]},"enquire":{"type":"string","description":"mailto link to start a conversation about this solution."}}}]},"Profile":{"type":"object","required":["name","role","company","location","timeZone","email","summary","links"],"properties":{"name":{"type":"string"},"role":{"type":"string"},"company":{"type":"string"},"location":{"type":"string"},"timeZone":{"type":"string","description":"IANA time zone."},"email":{"type":"string","format":"email"},"summary":{"type":"string"},"links":{"type":"object","additionalProperties":{"type":"string","format":"uri"}}}},"ProjectSummary":{"type":"object","required":["slug","title","description","category","featured","sourceUrl","liveUrl","caseStudyUrl"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"featured":{"type":"boolean"},"sourceUrl":{"type":["string","null"],"format":"uri"},"liveUrl":{"type":["string","null"],"format":"uri"},"caseStudyUrl":{"type":["string","null"],"format":"uri"}}},"ProjectList":{"type":"object","required":["projects"],"properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectSummary"}}}},"Project":{"allOf":[{"$ref":"#/components/schemas/ProjectSummary"},{"type":"object","required":["caseStudy"],"properties":{"caseStudy":{"oneOf":[{"type":"null"},{"type":"object","required":["tagline","overview","features","howItWorks","stack"],"properties":{"tagline":{"type":"string"},"overview":{"type":"array","items":{"type":"string"}},"features":{"type":"array","items":{"type":"object","required":["title","body"],"properties":{"title":{"type":"string"},"body":{"type":"string"}}}},"howItWorks":{"type":"array","items":{"type":"string"}},"stack":{"type":"array","items":{"type":"string"}}}}]}}}]},"Demo":{"type":"object","required":["slug","title","description","runsOnDevice","url","details"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"runsOnDevice":{"type":"boolean","description":"True when inference runs in the visitor's browser."},"url":{"type":"string","format":"uri"},"details":{"type":"object","additionalProperties":{"type":"string"}}}},"DemoList":{"type":"object","required":["demos"],"properties":{"demos":{"type":"array","items":{"$ref":"#/components/schemas/Demo"}}}},"JsonRpcRequest":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","integer","null"]},"method":{"type":"string","examples":["initialize","tools/list","tools/call"]},"params":{"type":"object"}}},"JsonRpcResponse":{"type":"object","required":["jsonrpc"],"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","integer","null"]},"result":{},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}}},"responses":{"NotFound":{"description":"Unknown endpoint or slug.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InvalidParameter":{"description":"A parameter has an invalid value.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"MethodNotAllowed":{"description":"Only GET is supported.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}