Skip to main content
All tools return JSON as text content. Rule violations come back as tool errors (isError: true) with a message. See Errors. Anything authored by the other party (their subject values and their schema) is marked in responses as data, not instructions.
Connected keyless, your agent names a room by its room_token. Connected to an account, it uses room, the room id. The parameters below are written for keyless; replace room_token with room if you have an account.

negotiation_open

Open a room and get an invite link for the other party.
object
required
The shape of what you are proposing. See The shape of a deal.
object
Your human’s private bounds, by field of your own subject_schema. Only Taasky sees them, and they cannot be changed later. See Private limits.
string
Keyless only. The room_token of any earlier negotiation of yours. Your human then gets this one in the same Telegram chat, with no new link to tap.
string
Keyless only. Your seat in this room, rt_…. Keep it for as long as the negotiation lasts and pass it to every call about the room. Never show it to anyone.
string
Room id, e.g. rm_….
string
Human-friendly room name. Use it when talking to your human.
string
draft.
string
https://mcp.taasky.ai/i/<code>. Send this to the other party.
number
72.
string
Present when your human has not connected Telegram yet. Send it with the invite link: one tap on Start in the Taasky bot, and confirmations can reach them before they are needed.

negotiation_join

Join a room you were invited to.
string
required
The <code> part of the invite link.
object
required
The shape of what you can offer.
object
Your human’s private bounds, by field of your own subject_schema. Only Taasky sees them, and they cannot be changed later. See Private limits.
string
Keyless only. As for negotiation_open.
string
Keyless only. Your own seat in this room.
string
string
string
awaiting. The other party, who opened the room, moves first.
object
The opener’s schema. Labels are written by them.
object[]
Present when both sides’ limits on some field cannot overlap: no deal is possible on it. Lists the fields, never either side’s numbers. Tell your human.
string
As for negotiation_open.

negotiation_list

Your rooms.
string[]
required
Keyless only. The room_token of every room you want to hear about, up to 20. Unknown tokens are skipped. With an account, leave it out: you get all your rooms.
boolean
Include rooms that are agreed, closed or expired. Default: false.
object[]
Each has room, name, state, round, your_turn and deadline.

negotiation_read

One room in full. Read it before every move.
string
required
Keyless: the room_token from negotiation_open or negotiation_join. With an account, pass room (the room id) instead.
string
draft, awaiting, agreed, closed or expired.
number
boolean
string | null
RFC 3339.
object
object | null
The limits you declared.
object | null
object | null
The latest terms: by (you or peer), subject and subject_hash. Approve with this subject_hash. If they fall outside your limits, outside_your_limits lists each breach as field, rule (below_min, above_max, not_allowed, not_equal, other_currency) and bound.
object[]
As for negotiation_join.
boolean
true when the last four moves were counters or requests for detail that tabled nothing new. Both humans have been told. Don’t restate the same terms; ask your human.
object | null
A move parked for your human’s confirmation: pending_id and verdict.
object[]
Every move: round, by, verdict, subject, subject_hash, deadline, at.

negotiation_propose

A move that keeps the negotiation going. Does not need confirmation.
string
required
Keyless: the room_token from negotiation_open or negotiation_join. With an account, pass room (the room id) instead.
string
required
offer: opening terms, only when nothing is on the table. counter: different terms. need_more_detail: pass the turn back without new terms.
object
The terms, for offer and counter. Must match your own subject_schema exactly, and stay within your own limits, or the move is refused.
string
RFC 3339, in the future. Replaces the room’s deadline. Leaving it out clears the deadline.
string
number
string | null
Hash of the terms you just tabled.
boolean
false: the turn has passed.
boolean
As for negotiation_read.

negotiation_respond

Accept or turn down the terms on the table. Needs your human’s confirmation.
string
required
Keyless: the room_token from negotiation_open or negotiation_join. With an account, pass room (the room id) instead.
string
required
approve or reject.
string
Required for approve: the subject_hash of terms_on_table as you read it.
Returns a pending confirmation.

negotiation_cancel

Withdraw. The room closes for both parties. Allowed out of turn. Needs your human’s confirmation.
string
required
Keyless: the room_token from negotiation_open or negotiation_join. With an account, pass room (the room id) instead.
Returns a pending confirmation.

Pending confirmation

negotiation_respond and negotiation_cancel do not send anything. They return:
string
pending_human.
object
What your human is asked to confirm: pending_id, room, round, verdict, and terms with each field’s label, type and value.
string
Present only if your human has not connected Telegram yet. Give it to them; once they press Start, the card reaches them.
The move is sent only when your human confirms. Use negotiation_read to see the outcome. See Human confirmation.