Connectors · Logistics & field service
Fergus MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Fergus and the rest of your systems. It gives your agent 91 Fergus actions (46 reads, 38 writes and 7 that wait for a confirmation) and holds the Fergus credential itself, so the agent never does. It paces Fergus's limits and records every call.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "fergus.contacts.list", intent: "check which Fergus account is connected"}# Returns a list of contacts · read · 1 upstream call- 91actionsin one signed file
- 46readlook, never change
- 38writecreate and update
- 7wait for a yesdestructive, confirmed first
Set up
Connect Fergus in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect Fergus.
Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
access_tokenFergus personal access token (in Fergus
account { op: "connections.requirements", service: "fergus" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "fergus.contacts.list" }# returns a list of contacts · read · 1 upstream callcheck { action: "fergus.contacts.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Fergus at a glance
- Sign-in
- Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
- You provide
access_token- Limits we pace to
- 100 calls a minute, per connection
- API covered
- Fergus API v1 (OpenAPI 3.1.0)
api.fergus.com - Built from
- Fergus's documentation, read 23 October 2026api.fergus.comapi.fergus.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 46 of 46 reads, for up to 5 minutes; a write clears what it affects
- Shared entities
- 9, so ask can line Fergus up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Fergus.
91 actions in 23 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 46readlook, never change
- 38writecreate and update
- 7destructivewait for a confirmation
Quotes
104 read · 5 write · 1 destructive
quotes: list · Returns a specific quote by ID from across all jobs · Voids a quote · Accepts a quote
Jobs
93 read · 6 write · 0 destructive
Returns a list of jobs · Creates a new job · Returns a job by id · Updates a draft job
Job phases
83 read · 4 write · 1 destructive
Creates a job phase · Returns a list of job phases · Get a job phase financial summary · Returns a job phase
Tasks
72 read · 4 write · 1 destructive
List all tasks for the company with optional filters · Create a new task · Get a single task by ID · Update a task's description, due date, or assigned employees
Sites
62 read · 4 write · 0 destructive
Returns a list of sites · Create a new site · Returns a site by ID · Update site
Calendar events
52 read · 2 write · 1 destructive
Returns a list of CalendarEvents · Creates a new calendar event · Returns a CalendarEvent by ID · Updates a calendar event
Customers
52 read · 2 write · 1 destructive
Returns a list of customers · Creates a new customer · Returns a customer by ID · Update a customer
Job quotes
52 read · 3 write · 0 destructive
Create a new quote · Update a quote by ID · Get all quotes for a job · Get a quote
15 more areas · 36 actions
- Stock on hand 5
- Contacts 4
- Users 4
- Enquiries 3
- Notes 3
- Pricebooks 3
- Attachments 2
- Customer invoices 2
- Favourites 2
- Pricebook items 2
- Pricing tiers 2
- Company 1
- Stock used 1
- Time entries 1
- Version 1
Top actions
The Fergus API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 44 of Fergus's 45 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
fergus.contacts.listReturns a list of contacts | Returns a list of contacts. | read | crm.contact.list177 connectors |
fergus.customers.listReturns a list of customers | Returns a list of customers. | read | crm.company.list162 connectors |
fergus.sites.listReturns a list of sites | Returns a list of sites. | read | crm.location.list48 connectors |
fergus.users.listReturns a list of users | Returns a list of users. | read | identity.user.list474 connectors |
fergus.contacts.createCreates a new contact for a customer or site | Creates a new contact for a customer or site. | write | crm.contact.create161 connectors |
fergus.customer_invoices.listReturns a list of invoices | Returns a list of invoices. | read | finance.invoice.list101 connectors |
fergus.customers.createCreates a new customer | Creates a new customer. | write | crm.company.create142 connectors |
fergus.jobs.listReturns a list of jobs | Returns a list of jobs. | read | work.project.list109 connectors |
fergus.sites.createCreate a new site | Create a new site. | write | crm.location.create41 connectors |
fergus.customers.deleteDeletes a customer by ID | Deletes a customer by ID. | destructive | crm.company.delete119 connectors |
fergus.calendar_events.listReturns a list of CalendarEvents | Returns a list of CalendarEvents. | read | comm.event.list61 connectors |
fergus.customer_invoices.getReturns a single invoice by ID with customer details and sections | Returns a single invoice by ID with customer details and sections. | read | finance.invoice.get102 connectors |
Try it
Prompts to paste into Claude.
Each one names the Fergus actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Which Fergus invoices are more than 30 days overdue? Group them by customer with the total owed.
calls
fergus.customer_invoices.list - Writewrite
Creates a new contact for a customer or site in Fergus. Show me exactly what you will send before you save it.
calls
fergus.contacts.create - Across systemsread
Which Fergus companies have invoices in ConnectWise PSA, and how many each?
calls
fergus.customers.listconnectwise_manage.invoices.list
Across your systems
Fergus, joined to the rest of your business.
One ask fetches from Fergus and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.
Which Fergus companies have invoices in ConnectWise PSA, and how many each?
fergus.customers.list+connectwise_manage.invoices.list, oncrm.company· ConnectWise PSAWhich Fergus companies have invoices in NetSuite, and how many each?
fergus.customers.list+netsuite.views.invoices, oncrm.company· NetSuite
identity.user 517crm.company 227crm.contact 192work.project 116work.task 105finance.invoice 91crm.location 49comm.event 47ask { intent: "which Fergus companies have invoices in ConnectWise PSA, and how many each", steps: [ { action: "fergus.customers.list", as: "co", input: {}, limit: 100, max_pages: 5 }, { action: "connectwise_manage.invoices.list", as: "inv", input: {}, limit: 100, max_pages: 5 }, { join: { left: "co", right: "inv", on: "crm.company", group_by: "co.name", select: ["co.name", "count(inv.id) as invoices"] } } ]}Governance for Fergus
Destructive actions wait for a yes.
7 Fergus actions are destructive. These are all of them:
- Deletes a customer by ID
fergus.customers.delete - Deletes a calendar event
fergus.calendar_events.delete - Soft-delete a task
fergus.tasks.delete - Voids a quote
fergus.quotes.void - Void a job phase by JobId and Job PhaseId
fergus.job_phases.void - Delete a file
fergus.attachments.delete - Delete stock on hand on job phase
fergus.stock_on_hand.delete
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Deletes a customer by ID?
intent: the user asked me to deletes a customer by ID
account { op: "keys.create", name: "fergus-agent", allowed_actions: ["fergus.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "fergus.customers.delete", approver: "[email protected]" }, { match: "fergus.calendar_events.delete", approver: "[email protected]" }, { match: "fergus.tasks.delete", approver: "[email protected]" } ]}Cost
What Fergus costs on actionlake.
Every Fergus action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Fergus refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 91 Fergus actions
- 20actions pageeach page of a long list is one call
- 46reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Fergus action.
91 actions by area: the id your agent calls, what it does, and its effect.
Quotes10
fergus.quotes.acceptAccepts a quotewritefergus.quotes.declineDeclines a quotewritefergus.quotes.getReturns a specific quote by ID from across all jobsreadfergus.quotes.get_by_guidReturns a specific quote by GUID with full detailsreadfergus.quotes.listquotes: listreadfergus.quotes.mark_as_sentMarks a quote as sentwritefergus.quotes.mark_as_viewedRecords that a customer viewed the quote in the portalwritefergus.quotes.publishPublishes a quotewritefergus.quotes.totalsGet totals for a quotereadfergus.quotes.voidVoids a quotedestructive
Jobs9
fergus.jobs.archiveArchives a job, including a draftwritefergus.jobs.createCreates a new jobwritefergus.jobs.finaliseFinalises a draft job, turning it into an active jobwritefergus.jobs.financial_summaryGet a job financial summaryreadfergus.jobs.getReturns a job by idreadfergus.jobs.holdPuts a job on holdwritefergus.jobs.listReturns a list of jobsreadfergus.jobs.resumeResumes a job that was on holdwritefergus.jobs.updateUpdates a draft jobwrite
Job phases8
fergus.job_phases.createCreates a job phasewritefergus.job_phases.financial_summaryGet a job phase financial summaryreadfergus.job_phases.getReturns a job phasereadfergus.job_phases.listReturns a list of job phasesreadfergus.job_phases.ready_for_invoiceMarks a job phase as ready for invoice, advancing it to `To Invoice`writefergus.job_phases.reopenjob phases: reopenwritefergus.job_phases.updateCreates a job phasewritefergus.job_phases.voidVoid a job phase by JobId and Job PhaseIddestructive
Tasks7
fergus.tasks.completeMark a task as completewritefergus.tasks.createCreate a new taskwritefergus.tasks.deleteSoft-delete a taskdestructivefergus.tasks.getGet a single task by IDreadfergus.tasks.listList all tasks for the company with optional filtersreadfergus.tasks.reopenReopen a completed taskwritefergus.tasks.updateUpdate a task's description, due date, or assigned employeeswrite
Sites6
fergus.sites.archiveArchive Sitewritefergus.sites.createCreate a new sitewritefergus.sites.getReturns a site by IDreadfergus.sites.listReturns a list of sitesreadfergus.sites.restoreRestore Sitewritefergus.sites.updateUpdate sitewrite
Calendar events5
fergus.calendar_events.createCreates a new calendar eventwritefergus.calendar_events.deleteDeletes a calendar eventdestructivefergus.calendar_events.getReturns a CalendarEvent by IDreadfergus.calendar_events.listReturns a list of CalendarEventsreadfergus.calendar_events.updateUpdates a calendar eventwrite
Customers5
fergus.customers.createCreates a new customerwritefergus.customers.deleteDeletes a customer by IDdestructivefergus.customers.getReturns a customer by IDreadfergus.customers.listReturns a list of customersreadfergus.customers.updateUpdate a customerwrite
Job quotes5
fergus.job_quotes.createCreate a new quotewritefergus.job_quotes.getGet a quotereadfergus.job_quotes.listGet all quotes for a jobreadfergus.job_quotes.updateUpdate a quote by IDwritefergus.job_quotes.update_by_versionUpdate a quote by version numberwrite
Stock on hand5
fergus.stock_on_hand.createAdd stock on hand to job phasewritefergus.stock_on_hand.deleteDelete stock on hand on job phasedestructivefergus.stock_on_hand.listJob Phase stock on handreadfergus.stock_on_hand.list_allStock on hand across all Job Phasesreadfergus.stock_on_hand.updateUpdate stock on hand on job phasewrite
Contacts4
fergus.contacts.createCreates a new contact for a customer or sitewritefergus.contacts.getReturns a contact by IDreadfergus.contacts.listReturns a list of contactsreadfergus.contacts.updateUpdates a customer contact or site contactwrite
Users4
fergus.users.getReturns a user by IDreadfergus.users.listReturns a list of usersreadfergus.users.meReturns the current authenticated userreadfergus.users.updateUpdate userwrite
Enquiries3
fergus.enquiries.createCreate Enquirywritefergus.enquiries.getReturns enquiry by IDreadfergus.enquiries.listGet all enquiriesread
Notes3
fergus.notes.createCreates a new note on an entity (job, customer, quote, etc.)writefergus.notes.listSchema for Notesreadfergus.notes.updateUpdates the text and/or pinned status of an existing notewrite
Pricebooks3
fergus.pricebooks.getSchema for a Pricebook by IDreadfergus.pricebooks.listSchema for Pricebooksreadfergus.pricebooks.searchpricebooks: searchread
Attachments2
fergus.attachments.deleteDelete a filedestructivefergus.attachments.listList files associated with an entityread
Customer invoices2
fergus.customer_invoices.getReturns a single invoice by ID with customer details and sectionsreadfergus.customer_invoices.listReturns a list of invoicesread
Favourites2
fergus.favourites.getGet a specific favourite sectionreadfergus.favourites.listGet all favourite sections, in flat or tree viewread
Pricebook items2
fergus.pricebook_items.getSchema for a Pricebook Item by IDreadfergus.pricebook_items.listSchema for Pricebook Itemsread
Pricing tiers2
fergus.pricing_tiers.getSchema for a Pricing Tier by IDreadfergus.pricing_tiers.listSchema for a Pricing Tierread
Company1
fergus.company.getReturns company information for the authenticated companyread
Stock used1
fergus.stock_used.liststock used: listread
Time entries1
fergus.time_entries.listGet all time entriesread
Version1
fergus.version.getReturns the current version of the APIread
Questions
The Fergus MCP server, answered.
Is there a Fergus MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 91 Fergus actions across quotes, jobs, job phases and tasks, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Fergus.
What do I need to connect Fergus?
Fergus personal access token (in Fergus. The free call account { op: "connections.requirements", service: "fergus" } lists exactly what to paste.
Can an AI agent delete or change things in Fergus?
Only if its key allows it, and only with an explicit confirmation. 7 Fergus actions are destructive, including deletes a customer by ID, deletes a calendar event and soft-delete a task. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my Fergus API limit?
actionlake paces every call to the limits in the Fergus service file: 100 calls a minute per connection. Repeated reads are answered from cache (46 Fergus actions can be), which never reaches Fergus.
What does a Fergus action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (20 Fergus actions page). Cache hits, searches, dry runs and calls Fergus refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which Fergus API does it cover?
The Fergus API v1 (OpenAPI 3.1.0) at api.fergus.com. It is built from Fergus's documentation as read on 23 October 2026. 91 actions in 23 areas, each one in the signed service file (version 1.0.0).
Can I combine Fergus with my other systems?
Yes. ask joins Fergus to ConnectWise PSA or NetSuite on the same customer and returns the answer rather than every row. Fergus maps crm.company, which 227 other connectors also map.
Does actionlake keep my Fergus data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Fergus credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent Fergus today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.