Connectors · CRM & sales
Pylon MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Pylon and the rest of your systems. It gives your agent 168 Pylon actions (70 reads, 73 writes and 25 that wait for a confirmation) and holds the Pylon credential itself, so the agent never does. It paces Pylon'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: "pylon.tasks.list", intent: "check which Pylon account is connected"}# Get all tasks · read · 1 upstream call- 168actionsin one signed file
- 70readlook, never change
- 73writecreate and update
- 25wait for a yesdestructive, confirmed first
Set up
Connect Pylon 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 Pylon.
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.
api_tokenPylon API token: an admin creates it under Settings > API TokenshostWhere your Pylon lives: your host
account { op: "connections.requirements", service: "pylon" } # 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: "pylon.tasks.list" }# get all tasks · read · 1 upstream callcheck { action: "pylon.tasks.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Pylon 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
api_token- Setup fields
host- Limits we pace to
- 60 calls a minute, per connection
- API covered
- Pylon REST API (OpenAPI 1.0.0)
api.usepylon.com - Built from
- Pylon's documentation, read 23 October 2026api.usepylon.comdocs.usepylon.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 70 of 70 reads, for up to 5 minutes; a write clears what it affects
- Shared entities
- 9, so ask can line Pylon up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Pylon.
168 actions in 44 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 70readlook, never change
- 73writecreate and update
- 25destructivewait for a confirmation
Issues
133 read · 8 write · 2 destructive
Get a list of issues · Get an issue by its ID/number · Search for issues by a given filter · Create a new issue
Accounts
104 read · 4 write · 2 destructive
Get a list of accounts · Get an account by its ID or external ID · Search for accounts by a given filter · Create a new account
Feature requests
92 read · 5 write · 2 destructive
Search or list feature requests · Get a feature request by ID · Create a feature request · Link a customer account to a feature request
Tasks
83 read · 4 write · 1 destructive
Get all tasks · Get a task by its ID · Search for tasks by a given filter · Create a task
Custom objects
73 read · 3 write · 1 destructive
List custom objects · Search for custom objects by a given filter · Get a custom object · Create a custom object
Issue messages
71 read · 4 write · 2 destructive
Create an internal note on an issue · Get messages on an issue · Create or update a draft reply · Reply to an issue
Articles
62 read · 3 write · 1 destructive
Get all articles in a knowledge base · Get an article by its ID · Create an article · Update an article
Contacts
63 read · 2 write · 1 destructive
Get all contacts · Get a contact by its ID or external ID · Search for contacts by a given filter · Create a new contact
36 more areas · 102 actions
- Tags 6
- Call recordings 5
- Imports 5
- KB collections 5
- Macros 5
- Milestones 5
- Projects 5
- Training data 5
- Custom fields 4
- Task comments 4
- Teams 4
- Users 4
- Account highlights 3
- Account relationships 3
- Custom field select options 3
- Issue groups 3
- KB themes 3
- Surveys 3
- Ticket forms 3
- Account notebook notes 2
- Audit logs 2
- Email suppressions 2
- Issue followers 2
- Issue threads 2
- Knowledge bases 2
- Survey responses 2
- Activity types 1
- Article feedback 1
- Issue statuses 1
- KB route redirects 1
- Macro groups 1
- Me 1
- Task statuses 1
- User roles 1
- User statuses 1
- Voice calls 1
Top actions
The Pylon API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 53 of Pylon's 53 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
pylon.tasks.listGet all tasks | Get all tasks. | read | work.task.list122 connectors |
pylon.contacts.listGet all contacts | Get all contacts. | read | crm.contact.list177 connectors |
pylon.accounts.listGet a list of accounts | Get a list of accounts. | read | crm.company.list162 connectors |
pylon.users.listGet a list of users | Get a list of users. | read | identity.user.list474 connectors |
pylon.tags.listGet all tags | Get all tags. | read | crm.tag.list65 connectors |
pylon.projects.searchSearch for projects by a given filter | Search for projects by a given filter. | read | work.project.search11 connectors |
pylon.tasks.getGet a task by its ID | Get a task by its ID. | read | work.task.get124 connectors |
pylon.me.getGet details of the authenticated organization and user | Get details of the authenticated organization and user. | read | identity.current_user.get307 connectors |
pylon.tasks.createCreate a task | Create a task. | write | work.task.create127 connectors |
pylon.projects.createCreate a project | Create a project. | write | work.project.create102 connectors |
pylon.tasks.updateUpdate a task | Update a task. | write | work.task.update118 connectors |
pylon.tasks.deleteDelete an existing task | Delete an existing task. | destructive | work.task.delete107 connectors |
Try it
Prompts to paste into Claude.
Each one names the Pylon actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Which Pylon tickets have been open the longest? Show me the ten oldest with their status.
calls
pylon.issues.list - Writewrite
Create a task in Pylon. Show me exactly what you will send before you save it.
calls
pylon.tasks.create - Across systemsread
Which Pylon companies have invoices in ConnectWise PSA, and how many each?
calls
pylon.accounts.listconnectwise_manage.invoices.list
Across your systems
Pylon, joined to the rest of your business.
One ask fetches from Pylon and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.
Which Pylon companies have invoices in ConnectWise PSA, and how many each?
pylon.accounts.list+connectwise_manage.invoices.list, oncrm.company· ConnectWise PSAWhich Pylon companies have invoices in NetSuite, and how many each?
pylon.accounts.list+netsuite.views.invoices, oncrm.company· NetSuite
identity.user 517crm.company 227crm.contact 192identity.current_user 142work.project 116work.task 105service.ticket 62crm.tag 47ask { intent: "which Pylon companies have invoices in ConnectWise PSA, and how many each", steps: [ { action: "pylon.accounts.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 Pylon
Destructive actions wait for a yes.
25 Pylon actions are destructive. These are all of them:
- Delete an existing task
pylon.tasks.delete - Delete an existing project
pylon.projects.delete - Delete a contact by its ID or external ID
pylon.contacts.delete - Delete an existing account
pylon.accounts.delete - Delete an existing tag
pylon.tags.delete - Delete an existing issue
pylon.issues.delete - Delete a comment on a task
pylon.task_comments.delete - Delete an article
pylon.articles.delete - Delete a milestone
pylon.milestones.delete - Merge issues
pylon.issues.merge - Delete an existing macro
pylon.macros.delete - Merge accounts
pylon.accounts.merge - Delete a custom object
pylon.custom_objects.delete - Delete a message
pylon.issue_messages.delete - Redact a message
pylon.issue_messages.redact - Delete a collection
pylon.kb_collections.delete - Delete a call recording
pylon.call_recordings.delete - Merge feature requests
pylon.feature_requests.merge - Delete a feature request
pylon.feature_requests.delete - Delete an account highlight
pylon.account_highlights.delete - Remove an email suppression
pylon.email_suppressions.delete - Remove a child from an issue group
pylon.issue_groups.remove_child - Delete an account relationship
pylon.account_relationships.delete - Delete training data documents
pylon.training_data.delete_documents - Delete a custom field select option
pylon.custom_field_select_options.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.
Delete an existing task?
intent: the user asked me to delete an existing task
account { op: "keys.create", name: "pylon-agent", allowed_actions: ["pylon.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "pylon.tasks.delete", approver: "[email protected]" }, { match: "pylon.projects.delete", approver: "[email protected]" }, { match: "pylon.contacts.delete", approver: "[email protected]" } ]}Cost
What Pylon costs on actionlake.
Every Pylon action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Pylon 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 168 Pylon actions
- 168actions pageeach page of a long list is one call
- 70reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Pylon action.
168 actions by area: the id your agent calls, what it does, and its effect.
Issues13
pylon.issues.createCreate a new issuewritepylon.issues.create_ai_responseCreate an AI response for an issuewritepylon.issues.deleteDelete an existing issuedestructivepylon.issues.getGet an issue by its ID/numberreadpylon.issues.link_external_incidentLink or unlink an incident to/from an issuewritepylon.issues.link_external_issueLink or unlink external issues to/from an issuewritepylon.issues.listGet a list of issuesreadpylon.issues.mark_spamMark issues as spamwritepylon.issues.mergeMerge issuesdestructivepylon.issues.searchSearch for issues by a given filterreadpylon.issues.snoozeSnooze an issuewritepylon.issues.updateUpdate an existing issuewritepylon.issues.update_manyUpdate multiple issueswrite
Accounts10
pylon.accounts.createCreate a new accountwritepylon.accounts.create_activityCreate a new activity for an accountwritepylon.accounts.deleteDelete an existing accountdestructivepylon.accounts.getGet an account by its ID or external IDreadpylon.accounts.listGet a list of accountsreadpylon.accounts.list_activitiesGet custom activities for an accountreadpylon.accounts.mergeMerge accountsdestructivepylon.accounts.searchSearch for accounts by a given filterreadpylon.accounts.updateUpdate an existing accountwritepylon.accounts.update_manyUpdate multiple accountswrite
Feature requests9
pylon.feature_requests.createCreate a feature requestwritepylon.feature_requests.create_evidenceLink a customer account to a feature requestwritepylon.feature_requests.deleteDelete a feature requestdestructivepylon.feature_requests.getGet a feature request by IDreadpylon.feature_requests.link_external_issueLink or unlink an external issue to/from a feature requestwritepylon.feature_requests.mergeMerge feature requestsdestructivepylon.feature_requests.searchSearch or list feature requestsreadpylon.feature_requests.set_portal_visibilitySet portal visibility for a feature requestwritepylon.feature_requests.updateUpdate a feature requestwrite
Tasks8
pylon.tasks.createCreate a taskwritepylon.tasks.deleteDelete an existing taskdestructivepylon.tasks.getGet a task by its IDreadpylon.tasks.link_external_issueLink or unlink an external issue to/from a taskwritepylon.tasks.link_issueLink or unlink a Pylon issue to/from a taskwritepylon.tasks.listGet all tasksreadpylon.tasks.searchSearch for tasks by a given filterreadpylon.tasks.updateUpdate a taskwrite
Custom objects7
pylon.custom_objects.createCreate a custom objectwritepylon.custom_objects.deleteDelete a custom objectdestructivepylon.custom_objects.getGet a custom objectreadpylon.custom_objects.listList custom objectsreadpylon.custom_objects.searchSearch for custom objects by a given filterreadpylon.custom_objects.updateUpdate a custom objectwritepylon.custom_objects.update_manyBulk update custom objectswrite
Issue messages7
pylon.issue_messages.create_draft_replyCreate or update a draft replywritepylon.issue_messages.create_noteCreate an internal note on an issuewritepylon.issue_messages.create_replyReply to an issuewritepylon.issue_messages.deleteDelete a messagedestructivepylon.issue_messages.listGet messages on an issuereadpylon.issue_messages.redactRedact a messagedestructivepylon.issue_messages.updateEdit a messagewrite
Articles6
pylon.articles.createCreate an articlewritepylon.articles.deleteDelete an articledestructivepylon.articles.getGet an article by its IDreadpylon.articles.listGet all articles in a knowledge basereadpylon.articles.request_reviewRequest review on an articlewritepylon.articles.updateUpdate an articlewrite
Contacts6
pylon.contacts.createCreate a new contactwritepylon.contacts.deleteDelete a contact by its ID or external IDdestructivepylon.contacts.getGet a contact by its ID or external IDreadpylon.contacts.listGet all contactsreadpylon.contacts.searchSearch for contacts by a given filterreadpylon.contacts.updateUpdate a contact by its ID or external IDwrite
Tags6
pylon.tags.createCreate a new tagwritepylon.tags.deleteDelete an existing tagdestructivepylon.tags.getGet a tag by its IDreadpylon.tags.listGet all tagsreadpylon.tags.searchSearch for tagsreadpylon.tags.updateUpdate an existing tagwrite
Call recordings5
pylon.call_recordings.createCreate a call recordingwritepylon.call_recordings.deleteDelete a call recordingdestructivepylon.call_recordings.getGet a call recording by its IDreadpylon.call_recordings.searchSearch for call recordings by a given filterreadpylon.call_recordings.updateUpdate a call recordingwrite
Imports5
pylon.imports.contactsMigration only: Import a new contactwritepylon.imports.issue_messagesMigration only: Import messages onto an existing issuewritepylon.imports.issuesMigration only: Import an issuewritepylon.imports.projectsMigration only: Import a projectwritepylon.imports.tasksMigration only: Import a taskwrite
KB collections5
pylon.kb_collections.createCreate a collectionwritepylon.kb_collections.deleteDelete a collectiondestructivepylon.kb_collections.getGet a collection by its IDreadpylon.kb_collections.listGet all collections in a knowledge basereadpylon.kb_collections.updateUpdate a collectionwrite
Macros5
pylon.macros.createCreate a new macrowritepylon.macros.deleteDelete an existing macrodestructivepylon.macros.getGet a macro by its IDreadpylon.macros.listGet all macrosreadpylon.macros.updateUpdate a macrowrite
Milestones5
pylon.milestones.createCreate a milestonewritepylon.milestones.deleteDelete a milestonedestructivepylon.milestones.getGet a milestone by its IDreadpylon.milestones.searchSearch for milestones by a given filterreadpylon.milestones.updateUpdate a milestonewrite
Projects5
pylon.projects.createCreate a projectwritepylon.projects.deleteDelete an existing projectdestructivepylon.projects.getGet a project by its IDreadpylon.projects.searchSearch for projects by a given filterreadpylon.projects.updateUpdate a projectwrite
Training data5
pylon.training_data.createCreate a training data configurationwritepylon.training_data.delete_documentsDelete training data documentsdestructivepylon.training_data.getGet a training data configuration by its IDreadpylon.training_data.listList all training data configurationsreadpylon.training_data.upload_contentUpload text content as training datawrite
Custom fields4
pylon.custom_fields.createCreate a custom fieldwritepylon.custom_fields.getGet a custom field by its IDreadpylon.custom_fields.listGet all custom fieldsreadpylon.custom_fields.updateUpdate a custom fieldwrite
Task comments4
pylon.task_comments.createCreate a comment on a taskwritepylon.task_comments.deleteDelete a comment on a taskdestructivepylon.task_comments.listGet comments for a taskreadpylon.task_comments.updateUpdate a comment on a taskwrite
Teams4
pylon.teams.createCreate a new teamwritepylon.teams.getGet a team by its IDreadpylon.teams.listGet a list of teamsreadpylon.teams.updateUpdate an existing teamwrite
Users4
pylon.users.getGet a user by its IDreadpylon.users.listGet a list of usersreadpylon.users.searchSearch for users by a given filterreadpylon.users.updateUpdate a userwrite
Account highlights3
pylon.account_highlights.createCreate an account highlightwritepylon.account_highlights.deleteDelete an account highlightdestructivepylon.account_highlights.updateUpdate an account highlightwrite
Account relationships3
pylon.account_relationships.createCreate an account relationshipwritepylon.account_relationships.deleteDelete an account relationshipdestructivepylon.account_relationships.listGet account relationshipsread
Custom field select options3
pylon.custom_field_select_options.createCreate a custom field select optionwritepylon.custom_field_select_options.deleteDelete a custom field select optiondestructivepylon.custom_field_select_options.updateUpdate a custom field select optionwrite
Issue groups3
pylon.issue_groups.add_childrenAdd children to an issue groupwritepylon.issue_groups.createCreate an issue groupwritepylon.issue_groups.remove_childRemove a child from an issue groupdestructive
KB themes3
pylon.kb_themes.getGet a knowledge base themereadpylon.kb_themes.publishPublish a knowledge base themewritepylon.kb_themes.updateUpdate a knowledge base theme draftwrite
Surveys3
pylon.surveys.getGet a survey by its IDreadpylon.surveys.listGet all surveysreadpylon.surveys.searchSearch for surveys by a given filterread
Ticket forms3
pylon.ticket_forms.getGet a ticket formreadpylon.ticket_forms.listGet a list of ticket formsreadpylon.ticket_forms.submitSubmit a ticket formwrite
Account notebook notes2
pylon.account_notebook_notes.createAppend a note to an account notebook blockwritepylon.account_notebook_notes.listGet notes from an account notebook blockread
Audit logs2
pylon.audit_logs.listGet a list of audit logsreadpylon.audit_logs.searchSearch audit logs with filtersread
Email suppressions2
pylon.email_suppressions.deleteRemove an email suppressiondestructivepylon.email_suppressions.listGet email suppressionsread
Issue followers2
pylon.issue_followers.listGet followers of an issuereadpylon.issue_followers.updateAdd or remove followers to/from an issuewrite
Issue threads2
pylon.issue_threads.createCreate a thread on an issuewritepylon.issue_threads.listGet all threads on an issueread
Knowledge bases2
pylon.knowledge_bases.getGet a knowledge base by its IDreadpylon.knowledge_bases.listGet all knowledge basesread
Survey responses2
pylon.survey_responses.listGet survey responses for a surveyreadpylon.survey_responses.list_for_issueGet survey responses for an issueread
Activity types1
pylon.activity_types.listGet custom activity typesread
Article feedback1
pylon.article_feedback.listGet article feedbackread
Issue statuses1
pylon.issue_statuses.listGet all issue statusesread
KB route redirects1
pylon.kb_route_redirects.createCreate a new route redirectwrite
Macro groups1
pylon.macro_groups.listGet all macro groupsread
Me1
pylon.me.getGet details of the authenticated organization and userread
Task statuses1
pylon.task_statuses.listGet all task statusesread
User roles1
pylon.user_roles.listGet a list of all user rolesread
User statuses1
pylon.user_statuses.listGet all user statusesread
Voice calls1
pylon.voice_calls.listGet voice calls (with recordings and transcripts) for an issueread
Questions
The Pylon MCP server, answered.
Is there a Pylon MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 168 Pylon actions across issues, accounts, feature requests and tasks, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Pylon.
What do I need to connect Pylon?
Pylon API token: an admin creates it under Settings > API Tokens. Plus your host. The free call account { op: "connections.requirements", service: "pylon" } lists exactly what to paste.
Can an AI agent delete or change things in Pylon?
Only if its key allows it, and only with an explicit confirmation. 25 Pylon actions are destructive, including delete an existing task, delete an existing project and delete a contact by its ID or external ID. 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 Pylon API limit?
actionlake paces every call to the limits in the Pylon service file: 60 calls a minute per connection. Repeated reads are answered from cache (70 Pylon actions can be), which never reaches Pylon.
What does a Pylon action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (168 Pylon actions page). Cache hits, searches, dry runs and calls Pylon 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 Pylon API does it cover?
The Pylon REST API (OpenAPI 1.0.0) at api.usepylon.com by default, or the base URL set when you connect. It is built from Pylon's documentation as read on 23 October 2026. 168 actions in 44 areas, each one in the signed service file (version 1.0.0).
Can I combine Pylon with my other systems?
Yes. ask joins Pylon to ConnectWise PSA or NetSuite on the same customer and returns the answer rather than every row. Pylon maps crm.company, which 227 other connectors also map.
Does actionlake keep my Pylon 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 Pylon 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 Pylon today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.