[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Create an Ashby offer and send the offer letter

> Create an Ashby offer from the terms you agreed, request approval and send the offer letter when it clears, without retyping every field.

Source: https://cotlet.dev/integrations/ashby-api-mcp-server/create-and-send-offers

The hiring manager agrees terms on a call, and the recruiter retypes them into the Offer Details form, waits for approvers and then drafts the letter email by hand.

Cotlet does it in your own Ashby account with get\_candidate, create\_offer and send\_offer\_letter, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=ashby) [All Ashby tools](https://cotlet.dev/integrations/ashby-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Ashby do this on its own?

Ashby has this flow natively (checked 16 Oct 2026): Create Offer, approvals, Generate Offer Letter and e-signature requests. The official MCP has no offer tool, and the API index lists offer.create and offer.start for code. Nothing in Ashby fills the offer form from a sentence or sends the letter when approval clears.

## How you do it in Ashby today

1. The recruiter moves the candidate to the Offer stage, which adds an offer activity to the profile.
2. They click Create Offer, fill the Offer Details form and click Submit.
3. If approvals are on, they click Generate Offer Letter when the organization requires a letter first, check the approvers and click Submit Request.
4. After all approval steps are done, the recruiter opens View Offer > Generate Offer Letter, uses Draft Offer Letter Email, picks an email template and clicks Send.
5. When the candidate answers, View Offer > Set Response marks the offer accepted or declined.

## How to create an Ashby offer and send the offer letter

Prompt

```
Ana Costa is in the Offer stage for Product Designer. Create her offer with base salary 95,000 and start date 16 Nov 2026, request approval, and when it is approved send the letter with the "Offer letter" email template.
```

1. 01  
### Check the stage  
get\_candidate confirms the application is in the Offer stage and that no offer exists yet. If one does, the agent stops and shows it instead of creating a second.
2. 02  
### Fill the form by field title  
create\_offer maps your terms to the field titles of your offer form, which an admin keeps under Admin > Offers > Offer Custom Fields. A field it cannot match is reported, not guessed.
3. 03  
### Respect approvals  
With request\_approval set, the agent submits the approval request and stops. It never sends a letter while an approval step is open.
4. 04  
### Send the letter  
Once approval is complete, send\_offer\_letter generates the letter, drafts the email from your template and sends it. The candidate gets money terms, so the call asks for your OK by default.
5. 05  
### Leave the response to you  
Marking the offer accepted or declined stays a human step, because it moves the candidate to Hired.

### What you get back

Example data

```
Offer created for Ana Costa, Product Designer
Base salary 95,000, start date 16 Nov 2026
Approval requested from: Hiring Manager, Finance
Letter: waiting for approval, nothing sent
```

### Other ways to ask

- Every morning, send the offer letter for any offer whose approval cleared since yesterday.
- Create offers for the two candidates in Offer stage from this spreadsheet of terms, request approval, send nothing.
- Show me the Offer stage candidates who have no offer yet.

## What Ashby allows, and what to know first

- Ashby lets Organization Admins generate offers; other users need the permissions Can See Candidate Profiles, Can Add/Edit Candidates and Can See Private Fields.
- Approvals are available on the Plus, Enterprise and Legacy Plus plans and are not available on Foundations.
- While offer approvals are active, Hired is hidden from Change Stage, and Offer Accepted moves the candidate to Hired.
- If Require Openings for Hires is on, an offer needs an opening, and the opening must be Open.
- Adding candidate e-signature tokens to an offer letter template turns on e-signature for it, and company tokens need a counter-signer.

create\_offer and send\_offer\_letter ask for your OK by default. To run it daily without you, switch confirmation off for those tools in your dashboard.

Sources: [Ashby Knowledge Base: Offers & E-Signatures](https://docs.ashbyhq.com/offers-and-offer-letters) · [Ashby Knowledge Base: Offer Approvals](https://docs.ashbyhq.com/offer-approvals) · [Ashby Knowledge Base: Openings Management](https://docs.ashbyhq.com/openings-management) · [Ashby API reference: endpoint index (llms.txt)](https://developers.ashbyhq.com/llms.txt)

## Call create\_offer from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/ashby/applications/9c41b7a2-6e03-4d58-a1f9-3b8d25e07c64/offers \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fields":{"Base salary":"95000","Start date":"2026-11-16"},"request_approval":true}'
```

Example response

```
{
"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"
]
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is ashby\_write → create\_offer. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/ashby-api-mcp-server.md#automations)

## Ashby tools this automation uses

__Cotlet Ashby tools used to create an Ashby offer and send the offer letter__
| Tool | Parameters |
| ------------------- | --------------------------------------------------------- |
| get\_candidate | candidate\_id |
| create\_offer | application\_id, fields, opening\_id, request\_approval |
| send\_offer\_letter | offer\_id, email\_template, request\_signature, signatory |

[All 12 Ashby tools with descriptions](https://cotlet.dev/integrations/ashby-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect Ashby to Cotlet?

Yes. You sign in to Ashby yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Ashby once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Ashby automations

- [Reject Ashby candidates and send the rejection email](https://cotlet.dev/integrations/ashby-api-mcp-server/reject-candidates-and-send-rejection-emails.md)
- [Schedule Ashby interviews for candidates in a stage](https://cotlet.dev/integrations/ashby-api-mcp-server/schedule-interviews-for-candidates.md)
- [Ashby API and MCP server: every tool](https://cotlet.dev/integrations/ashby-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Ashby.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Ashby.

[Sign up free](https://cotlet.dev/app/signup?app=ashby)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
