# Taasky

> Your agent settles small things with anyone, agent or browser. Nothing is agreed until you say yes.

- name: ai.taasky/taasky
- version: 0.1.1
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 90/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.taasky%2Ftaasky
- tools: https://api.protogrid.dev/v1/servers/ai.taasky%2Ftaasky/tools

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

## Connection (mcpServers)

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


## Trust

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

## Quality 90/100 (new)

### 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: 93 (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`: 7 of 7 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 5 of 7 tools declare all four hints; missing: negotiation_list (destructiveHint, idempotentHint); negotiation_read (destructiveHint, idempotentHint)
- pass `tools.token_cost`: about 2,541 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

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

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 1 of the 7 days needed

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

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

- tools: 7, about 2,541 tokens to load them all
- tool set hash: 001b6da6c1e83c3ab5aae16705235507
- tools last changed: 2026-10-19T16:00:12.994Z
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.taasky/taasky.svg)](https://protogrid.dev/servers/ai.taasky/taasky)
- 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-19 `negotiation_open` changed (description, inputSchema)
  - before: Start a new negotiation: creates a room and returns invite_url for the other party. Use it when your human wants to agree something with someone; if you were sent an invite link instead, use negotiation_join. Each call opens a separate room. subject_schema is the shape of the terms; pass subject to open with your terms, which the other side can accept as soon as they join. The invitation expires after 72 hours if nobody joins.
  - after: Start a new negotiation: creates a room and returns invite_url for the other party. Use it when your human wants to agree something with someone; if you were sent an invite link instead, use negotiation_join. Each call opens a separate room. subject_schema is the shape of the terms; pass subject to open with your terms, which the other side can accept as soon as they join. For a meeting with a few possible times, pass slots instead: no schema needed, and the other side picks one with a tap. options does the same for any schema. The invitation expires after 72 hours if nobody joins.
- 2026-10-19 `negotiation_read` changed (description, inputSchema)
  - before: Read one room in full: state, whose turn it is, every round, the terms on the table with their subject_hash, and next: what to do now. Call it before every move and when your human asks how a negotiation is going. Changes nothing.
  - after: Read one room in full: state, whose turn it is, every round, the terms on the table with their subject_hash, next: what to do now, and for_your_human: the room as your human should see it, to show them as it is. Call it before every move and when your human asks how a negotiation is going. Changes nothing.
- 2026-10-19 `negotiation_cancel` changed (description) **meaning changed**
  - before: Withdraw from the negotiation; the room closes for both parties. Allowed out of turn. Needs your human's confirmation, like negotiation_respond.
  - after: Withdraw from the negotiation; the room closes for both parties and cannot be reopened. Terms on the table lapse. Allowed out of turn, and before the other side joins (the invitation is then withdrawn). Needs your human's confirmation, like negotiation_respond. To turn down terms but stay, counter with negotiation_propose.
- 2026-10-19 `negotiation_respond` changed (description)
  - before: Accept or turn down the terms on the table. This is not sent by you: your human is asked to confirm, with the terms shown field by field, and only their answer releases the move. approve must quote the subject_hash of the terms it accepts (from negotiation_read). The room is agreed once both parties approve the same hash.
  - after: Accept or turn down the terms on the table. This is not sent by you: your human is asked to confirm, with the terms shown field by field, and only their answer releases the move. approve must quote the subject_hash of the terms it accepts (from negotiation_read). The room is agreed once both parties approve the same hash. reject closes the room for good; to keep negotiating, counter with negotiation_propose instead.
- 2026-10-19 `negotiation_propose` changed (description)
  - before: Make a move that keeps the negotiation going. offer: opening terms, only when no terms are on the table. counter: different terms. need_more_detail: you cannot decide yet; it passes the turn back without new terms. Terms are what is agreed if the other side approves them: for a meeting, the exact slot it takes, never the window your human is free (that belongs in limits). Terms must match your own subject_schema exactly; unknown fields reject the move.
  - after: Make a move that keeps the negotiation going; to accept or end it, use negotiation_respond. Only on your turn. offer: opening terms, only when no terms are on the table. counter: different terms. need_more_detail: you cannot decide yet; it passes the turn back without new terms. Terms are what is agreed if the other side approves them: for a meeting, the exact slot it takes, never the window your human is free (that belongs in limits). Terms must match your own subject_schema exactly; unknown fields reject the move.
- 2026-10-19 `negotiation_read` changed (description) **meaning changed**
  - before: One room in full: current state, every round, the terms on the table.
  - after: Read one room in full: state, whose turn it is, every round, the terms on the table with their subject_hash, and next: what to do now. Call it before every move and when your human asks how a negotiation is going. Changes nothing.
- 2026-10-19 `negotiation_list` changed (description) **meaning changed**
  - before: Your negotiation rooms: state, whose turn it is, nearest deadline.
  - after: List the rooms whose room_token you pass (up to 20): state, round, whose turn it is, deadline. Use it to see where several negotiations stand; for one room's terms and next move, use negotiation_read.
- 2026-10-19 `negotiation_join` changed (description, inputSchema) **meaning changed**
  - before: Join a negotiation you were invited to, declaring the shape of what you can offer.
  - after: Join a room you were invited to; use negotiation_open to start your own instead. Declare subject_schema, the shape of terms you can agree, and limits, the bounds your human set (kept private from the other side). An invitation can be answered once: a used, withdrawn or expired one is refused with the reason. Returns the room and, if the other side opened with terms, terms_on_table: the turn is then yours, to accept with negotiation_respond or answer with negotiation_propose.
- 2026-10-19 `negotiation_open` changed (description) **meaning changed**
  - before: Open a negotiation room and get an invite link to send to the other party. You declare the shape of what you are proposing; they declare theirs when they join. Pass subject to open with your terms: the invitation carries them, and the other side can accept them as soon as they join.
  - after: Start a new negotiation: creates a room and returns invite_url for the other party. Use it when your human wants to agree something with someone; if you were sent an invite link instead, use negotiation_join. Each call opens a separate room. subject_schema is the shape of the terms; pass subject to open with your terms, which the other side can accept as soon as they join. The invitation expires after 72 hours if nobody joins.

Full history: https://api.protogrid.dev/v1/servers/ai.taasky%2Ftaasky/changes

## Remotes

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

## Packages

_none_

## Tools (7)

- `negotiation_cancel`: Withdraw from the negotiation; the room closes for both parties and cannot be reopened. Terms on the table lapse. Allowed out of turn, and before the other side joins (the invitation is then withdrawn). Needs your human's confirmation, like negotiation_respond. To turn down terms but stay, counter with negotiation_propose.
- `negotiation_join`: Join a room you were invited to; use negotiation_open to start your own instead. Declare subject_schema, the shape of terms you can agree, and limits, the bounds your human set (kept private from the other side). An invitation can be answered once: a used, withdrawn or expired one is refused with the reason. Returns the room and, if the other side opened with terms, terms_on_table: the turn is then yours, to accept with negotiation_respond or answer with negotiation_propose.
- `negotiation_list`: List the rooms whose room_token you pass (up to 20): state, round, whose turn it is, deadline. Use it to see where several negotiations stand; for one room's terms and next move, use negotiation_read.
- `negotiation_open`: Start a new negotiation: creates a room and returns invite_url for the other party. Use it when your human wants to agree something with someone; if you were sent an invite link instead, use negotiation_join. Each call opens a separate room. subject_schema is the shape of the terms; pass subject to open with your terms, which the other side can accept as soon as they join. For a meeting with a few possible times, pass slots instead: no schema needed, and the other side picks one with a tap. options does the same for any schema. The invitation expires after 72 hours if nobody joins.
- `negotiation_propose`: Make a move that keeps the negotiation going; to accept or end it, use negotiation_respond. Only on your turn. offer: opening terms, only when no terms are on the table. counter: different terms. need_more_detail: you cannot decide yet; it passes the turn back without new terms. Terms are what is agreed if the other side approves them: for a meeting, the exact slot it takes, never the window your human is free (that belongs in limits). Terms must match your own subject_schema exactly; unknown fields reject the move.
- `negotiation_read`: Read one room in full: state, whose turn it is, every round, the terms on the table with their subject_hash, next: what to do now, and for_your_human: the room as your human should see it, to show them as it is. Call it before every move and when your human asks how a negotiation is going. Changes nothing.
- `negotiation_respond`: Accept or turn down the terms on the table. This is not sent by you: your human is asked to confirm, with the terms shown field by field, and only their answer releases the move. approve must quote the subject_hash of the terms it accepts (from negotiation_read). The room is agreed once both parties approve the same hash. reject closes the room for good; to keep negotiating, counter with negotiation_propose instead.
