# COTAL actions (cotal.ai)

> cotal.ai actions: product overview, site search, build log, feedback, Cloud waitlist, updates, calls

- name: ai.cotal/cotal
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 93/100
- quality: 96/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.cotal%2Fcotal
- tools: https://api.protogrid.dev/v1/servers/ai.cotal%2Fcotal/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "cotal": {
      "type": "http",
      "url": "https://cotal.ai/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 85
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-100% ~updated-43d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 96/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 12 of 12 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,941 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 4 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 12, about 2,941 tokens to load them all
- tool set hash: 160761c9956337de537cb1e0919d2c42
- tools last changed: 2026-10-14T02:12:20.863Z
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.cotal/cotal.svg)](https://protogrid.dev/servers/ai.cotal/cotal)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-14 `cotal_get_my_post` added
  - One staged article with every field, its current markdown and its revision history; pass revision for an older text. Requires a team key.
- 2026-10-14 `cotal_list_my_posts` added
  - The review state of the articles staged on this site : slug, title, status (draft, pending, published, rejected), review note and current revision. Requires a team key.
- 2026-10-14 `cotal_update_post` added
  - Improves an article staged with cotal_draft_post. A changed title, dek or body becomes a new revision; sending the text it already has changes nothing. Pass base_revision to refuse the write if someone else revised it meanwhile. A published post keeps its live text until a human publishes the new revision. Requires a team key.
- 2026-10-14 `cotal_draft_post` added
  - Stages a new article for the COTAL build log (cotal.ai/blog). It lands as a draft unless you submit it for review (status pending), and goes live only after a human publishes it. Returns the slug and a preview URL. Requires a team key on the connection.

Full history: https://api.protogrid.dev/v1/servers/ai.cotal%2Fcotal/changes

## Remotes

- https://cotal.ai/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (12)

- `cotal_draft_post`: Stages a new article for the COTAL build log (cotal.ai/blog). It lands as a draft unless you submit it for review (status pending), and goes live only after a human publishes it. Returns the slug and a preview URL. Requires a team key on the connection.
- `cotal_get_my_post`: One staged article with every field, its current markdown and its revision history; pass revision for an older text. Requires a team key.
- `cotal_get_post`: 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.
- `cotal_join_waitlist`: 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.
- `cotal_list_my_posts`: The review state of the articles staged on this site : slug, title, status (draft, pending, published, rejected), review note and current revision. Requires a team key.
- `cotal_list_posts`: 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.
- `cotal_overview`: 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.
- `cotal_request_call`: 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.
- `cotal_search`: 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.
- `cotal_submit_feedback`: 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.
- `cotal_subscribe_newsletter`: Subscribes the user's email to release updates from the COTAL team. Idempotent: an already-subscribed email is a no-op.
- `cotal_update_post`: Improves an article staged with cotal_draft_post. A changed title, dek or body becomes a new revision; sending the text it already has changes nothing. Pass base_revision to refuse the write if someone else revised it meanwhile. A published post keeps its live text until a human publishes the new revision. Requires a team key.
