actions.cancel, whose whole input is the identifier of the review request it withdraws. Sending it a key is refused before the tool runs.
Send the write
contacts.notes.update replaces the private note on one of the student’s own contacts. Send the new value and an idempotency key of 16 to 128 characters that you choose:
contacts.notes.update input
contacts.notes.update result
result object is a summary and a count. The written value is never sent back, so read the value with the matching read tool if you need to show the student what is stored. A write result is never larger than 4,096 bytes, which is why it carries a summary rather than the value.
Poll a write that was accepted
A safe write can answeraccepted rather than completed, which means the work is under way and nothing has been written yet. To poll it, call the same tool again with the same idempotency key and the same input. The reply is the current state of that change, and nothing is written twice.
Wait at least a second between calls, and stop when the result is completed, failed, cancelled or uncertain. Those four are the states nothing moves out of.
Replay after a lost answer
Send the identical call again, the same tool, the same key and the same input, and the answer is the same completed result. Nothing is written a second time:contacts.notes.update result
Recognise a reused key
Send the same key with different input, here a different note on the same contact, and the call is refused. Nothing is written and the stored note is untouched:contacts.notes.update result
Handle the retry hint
A safe write can be accepted and still ask you to come back. The answer is an accepted result with a hint beside it, and nothing has failed:Accepted result with a retry hint
retryAfterMs milliseconds and call the tool again with the same idempotency key.
The other nine safe writes
Each of the first eight takes the same idempotency key and answers with the same shapes. The ninth,actions.cancel, takes no key at all. Every tool’s own reference page carries its full input table, including the bounds the executor enforces on each field.
profile.update
profile.update
Sets one profile preference per call: the email length, the headline or the about-me summary.The completed summary reads
profile.update input
Email length preference updated, Headline updated or Summary updated.profile.job_search_stage.update
profile.job_search_stage.update
Sets the job-search stage, the experience level and the recruiting timeline together.The completed summary reads
profile.job_search_stage.update input
Job-search stage updated.meetings.notes.update
meetings.notes.update
Replaces the private preparation notes on one meeting, at most 10,000 characters. This is the meeting’s own notes field and not the note the outcome form captures. A practice session is not writable.The completed summary reads
meetings.notes.update input
Meeting notes updated.meetings.outcome.update
meetings.outcome.update
Records the star rating from 0.5 to 5 in half steps, the referral outcome, up to 10 key takeaways and the outcome notes, all together. It does not mark a thank-you as sent, it does not schedule a follow-up and it does not move the linked contact. The student does those in the application.The completed summary reads
meetings.outcome.update input
Meeting outcome updated.campaign_pause_sending
campaign_pause_sending
Stops a campaign from sending more mail. Read the bounds on the campaign pause tool page before you promise a student anything: it is a hold rather than a withdrawal, mail a send-now batch has already queued is still dispatched, and nothing already sent can be recalled. There is no tool that resumes sending, so the student does that in the application.The completed summary reads
campaign_pause_sending input
Campaign sending paused.campaigns.details.update
campaigns.details.update
Rewrites one campaign’s name, description and goal. All three are written together and all three are required, so read them with The completed summary reads
campaigns.get first and send back the values you are keeping. The name is at most 100 characters and may not be blank, the description and the goal at most 500 each. Nothing about who the campaign contacts, what it sends or when it sends changes.campaigns.details.update input
Campaign details updated.jobs.applications.stage.update
jobs.applications.stage.update
Moves one internship application to a stage and a priority. Both are written together and both are required, so read them with The completed summary reads
jobs.applications.get first. The job tools page lists the eight stages and the three priorities, and neither field can be cleared. Moving off the saved stage for the first time records the applied date, exactly as the application does.jobs.applications.stage.update input
Application stage updated.actions.cancel
actions.cancel
Withdraws a request the same connection proposed. It is the one write tool that takes no idempotency key, because the identifier it takes already names one request. Withdraw a review request is the procedure.
Next steps
Propose a booking page change
The five changes that need the student’s approval.
Settle an uncertain result
What to do when Coffee Chats will not say whether a write landed.

