Create offer
Create an offer for an application in the Offer stage from your offer form fields.
MCP tool ashby_write → create_offer
Fills the Offer Details form with the values you give, keyed by field title as set under Admin > Offers > Offer Custom Fields, and submits it. The application must be in the Offer stage. With request_approval set it also submits the approval request, which notifies the approvers; with approvals on, no letter can go out until every step is done. Needs Organization Admin, or the permissions Can See Candidate Profiles, Can Add/Edit Candidates and Can See Private Fields. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| application_id string required | string | Application ID from list_applications or get_candidate. |
| fields object required | object | Offer form values keyed by field title, for example {"Base salary": "95000"}. |
| opening_id string | string | Opening ID, required when your organization turned on Require Openings for Hires. |
| request_approval boolean | boolean | Submit the approval request after creating. Default: false. |
tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ashby_write",
"arguments": {
"operation": "create_offer",
"arguments": {
"application_id": "9c41b7a2-6e03-4d58-a1f9-3b8d25e07c64",
"fields": {
"Base salary": "95000",
"Start date": "2026-11-16"
},
"request_approval": true
}
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"offer_id": "6b3e90d4-1f87-4a52-8c06-d94a7e215b03",
"application_id": "9c41b7a2-6e03-4d58-a1f9-3b8d25e07c64",
"fields": {
"Base salary": "95000",
"Start date": "2026-11-16"
},
"approval_requested": true,
"approvers": [
"Hiring Manager",
"Finance"
]
},
"isError": false
}