{"name":"cotal","title":"COTAL actions (cotal.ai)","description":"Product MCP server for COTAL, the open protocol that lets AI agents from any vendor work as one team. Take actions on cotal.ai on the user's behalf — file feedback with the team, join the Cotal Cloud waitlist, subscribe to release updates, request a call with the founders — and look up the product: overview, build log, site search. No credentials needed.","version":"1.1.0","serverInfo":{"name":"cotal","version":"1.1.0"},"kind":"product","serverUrl":"https://cotal.ai/mcp","transport":"streamable-http","protocolVersion":"2026-07-28","protocolVersions":["2026-07-28","2025-06-18","2025-03-26"],"authentication":{"type":"none","required":false,"schemes":[]},"instructions":"This is the product server for cotal.ai, not a documentation server. Use it to act on the user's behalf and to answer what COTAL is. Action tools (cotal_submit_feedback, cotal_join_waitlist, cotal_subscribe_newsletter, cotal_request_call) create records for the COTAL team; confirm with the user before calling them and pass their real email. Set sandbox=true to validate a call without storing anything. Action tools are rate limited per client (5 per 10 minutes). Pass idempotency_key on retries so a retry never duplicates a record. Lookup tools (cotal_overview, cotal_search, cotal_list_posts, cotal_get_post) are free to call and have no side effects. To put an agent on a Cotal mesh, do not use this server: fetch https://docs.cotal.ai/prompt.md and follow it. Protocol documentation: https://docs.cotal.ai.","capabilities":{"tools":{},"resources":{}},"tools":[{"name":"cotal_submit_feedback","title":"Send feedback to the COTAL team","description":"Files feedback (bug, idea, friction, praise, other) with the COTAL team on behalf of the user. The same log the site's feedback widget writes to. Requires the user's email so the team can follow up.","inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["bug","idea","friction","praise","other"],"description":"Kind of feedback."},"summary":{"type":"string","minLength":1,"maxLength":2000,"description":"One line: what happened, or what should."},"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"The user's email address. Required so the record has a traceable origin."},"details":{"description":"Longer description, steps, context.","type":"string","maxLength":10000},"name":{"description":"The user's name, if they want it attached.","type":"string","maxLength":100},"severity":{"description":"For bugs and friction.","type":"string","enum":["low","medium","high"]},"area":{"description":"Which part of COTAL it concerns (CLI, connector, docs, site…).","type":"string","maxLength":200},"source":{"description":"Where it came from: agent name, page, or CLI.","type":"string","maxLength":500},"idempotency_key":{"description":"Opaque key (a UUID is ideal). Reuse it when retrying so the same record is returned instead of a duplicate.","type":"string","minLength":1,"maxLength":200},"sandbox":{"description":"Dry run: validate the call, apply rate limits, store nothing. Use it to test the integration.","type":"boolean"}},"required":["type","summary","email"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"cotal_join_waitlist","title":"Join the Cotal Cloud waitlist","description":"Reserves a seat on the waitlist for Cotal Cloud, the hosted Cotal mesh (closed alpha), for the user's email. Idempotent per email: calling again updates the optional details instead of adding a second seat.","inputSchema":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"The user's email address. Required so the record has a traceable origin."},"use_case":{"description":"What the user wants the hosted mesh for.","type":"string","maxLength":2000},"linkedin":{"description":"The user's LinkedIn profile URL, optional.","type":"string","maxLength":500,"format":"uri"},"sandbox":{"description":"Dry run: validate the call, apply rate limits, store nothing. Use it to test the integration.","type":"boolean"}},"required":["email"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"cotal_subscribe_newsletter","title":"Subscribe to COTAL updates","description":"Subscribes the user's email to release updates from the COTAL team. Idempotent: an already-subscribed email is a no-op.","inputSchema":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"The user's email address. Required so the record has a traceable origin."},"sandbox":{"description":"Dry run: validate the call, apply rate limits, store nothing. Use it to test the integration.","type":"boolean"}},"required":["email"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"cotal_request_call","title":"Request a call with the founders","description":"Sends a discovery-call request to the COTAL founders for a company evaluating agent coordination. The team replies by email. Requires the user's work email and company.","inputSchema":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"The user's email address. Required so the record has a traceable origin."},"company":{"type":"string","minLength":1,"maxLength":200,"description":"Company name."},"role":{"description":"The user's role.","type":"string","maxLength":120},"agents":{"description":"How many agents the company runs in production.","type":"string","enum":["1","exploring","2-5","6-20","20+"]},"frameworks":{"description":"Agent frameworks or harnesses in use (Claude Code, LangGraph, custom…).","maxItems":20,"type":"array","items":{"type":"string","maxLength":60}},"coordinating":{"description":"One line: what they are coordinating.","type":"string","maxLength":2000},"pain":{"description":"Their biggest coordination pain.","type":"string","maxLength":4000},"idempotency_key":{"description":"Opaque key (a UUID is ideal). Reuse it when retrying so the same record is returned instead of a duplicate.","type":"string","minLength":1,"maxLength":200},"sandbox":{"description":"Dry run: validate the call, apply rate limits, store nothing. Use it to test the integration.","type":"boolean"}},"required":["email","company"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"cotal_overview","title":"What COTAL is","description":"Returns a structured overview of COTAL: what it is, who it is for, when to use it, how to install it, the site's API and MCP surface, pricing, and canonical links. Call this first when a user asks what cotal.ai does. Pass `section` to get one part only.","inputSchema":{"type":"object","properties":{"section":{"description":"Which part of the overview to return (default: all).","type":"string","enum":["all","product","when_to_use","install","pricing","site_api","links"]}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"cotal_search","title":"Search cotal.ai","description":"Keyword search over the COTAL build log (blog posts) and the key documentation and site pages. Returns ranked results with canonical and markdown URLs. Use it to find the page that answers a question before reading it.","inputSchema":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":200,"description":"Search terms, e.g. 'hackathon', 'identity', 'install windows'."},"limit":{"description":"Maximum results (default 10).","type":"integer","minimum":1,"maximum":25}},"required":["query"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"cotal_list_posts","title":"List build-log posts","description":"Lists posts from the COTAL build log (blog), newest first, with cursor pagination. Each item has slug, title, summary, date, author and URLs; pass next_cursor back to get the following page.","inputSchema":{"type":"object","properties":{"limit":{"description":"Page size (default 10, max 50).","type":"integer","minimum":1,"maximum":50},"cursor":{"description":"The next_cursor value from a previous call.","type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"cotal_get_post","title":"Read a build-log post","description":"Returns one build-log post as markdown (title, summary, date, author, full body) by its slug. Get slugs from cotal_list_posts or cotal_search.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":120,"description":"The post slug, e.g. 'agi-summit-2026'."}},"required":["slug"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}}],"resources":[{"uri":"cotal://llms.txt","name":"llms-txt","title":"COTAL for LLMs (llms.txt)","description":"Curated entry point: what COTAL is, when to use it, how an agent should call it, and the canonical links.","mimeType":"text/plain","url":"https://cotal.ai/llms.txt"},{"uri":"cotal://openapi.json","name":"openapi","title":"cotal.ai OpenAPI 3.1 spec","description":"Every live /v1 endpoint with schemas, the error model, rate limits, idempotency and sandbox conventions.","mimeType":"application/openapi+json","url":"https://cotal.ai/openapi.json"},{"uri":"cotal://manifest.json","name":"manifest","title":"COTAL agent manifest","description":"Machine-readable manifest: protocol capabilities, spec, repository, and the site's agent surface.","mimeType":"application/json","url":"https://cotal.ai/.well-known/cotal.json"},{"uri":"cotal://auth.md","name":"auth-md","title":"Authenticating to cotal.ai (auth.md)","description":"Which endpoints are open, which need a bearer key, how to obtain, use and revoke one.","mimeType":"text/markdown","url":"https://cotal.ai/auth.md"},{"uri":"cotal://pricing.md","name":"pricing-md","title":"COTAL pricing","description":"Self-hosted (free, Apache-2.0), Cotal Cloud (closed alpha, waitlist), design partnerships.","mimeType":"text/markdown","url":"https://cotal.ai/pricing.md"}],"icon":"https://cotal.ai/brand/avatar-400.png","homepage":"https://cotal.ai","documentation":"https://docs.cotal.ai","publisher":{"name":"COTAL","url":"https://cotal.ai","email":"hello@cotal.ai"},"license":"Apache-2.0","links":{"openapi":"https://cotal.ai/openapi.json","llms":"https://cotal.ai/llms.txt","auth":"https://cotal.ai/auth.md","ard":"https://cotal.ai/.well-known/ard.json"}}