The Pylon MCP connector routes your AI agent's tool calls to Pylon's own MCP server through Scalekit. Each user signs in to Pylon once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 31 tools.
- Tools
- 31
- What they doRead · write · destructive
- 18 · 9 · 418 read9 write4 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
What you can do
- Handle support issues: create, search, and update issues and read their full message history
- Manage accounts and contacts: search and update customer accounts, upload files, and look up contacts
- Run customer projects: create projects from templates and update their milestones, owners, dates, and status
- Track tasks: create, search, update, and delete tasks linked to accounts, projects, or milestones
- Review AI agent activity: retrieve an AI agent’s actions, escalations, and messages on a specific issue
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Pylon MCP connection
In AgentKit > Connections, create a Pylon MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Pylon, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'pylonmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Pylon MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'pylonmcp_get_me',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "pylonmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Pylon MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="pylonmcp_get_me",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolpylonmcp_get_accountRetrieve a single account by its ID or external ID.Read-onlyGet Account
Retrieve a single account by its ID or external ID.
Inputs
accountstringrequired- The account ID (UUID) or external ID.
pylonmcp_get_agent_issueRetrieve an AI agent's full event and action timeline on a specific issue, including tool calls, runbook steps, reassignments/escalations, messages, and outcomes.Read-onlyGet Agent Issue Activity
Retrieve an AI agent's full event and action timeline on a specific issue, including tool calls, runbook steps, reassignments/escalations, messages, and outcomes.
Inputs
agent_idstringrequired- The AI agent whose activity to fetch.
issue_idstringrequired- The issue to fetch the agent's event timeline for.
pylonmcp_get_contactRetrieve a single contact by their ID or external ID.Read-onlyGet Contact
Retrieve a single contact by their ID or external ID.
Inputs
contactstringrequired- The contact ID (UUID).
pylonmcp_get_issueRetrieve a single issue by its ID.Read-onlyGet Issue
Retrieve a single issue by its ID.
Inputs
issuestringrequired- The issue ID (UUID) or issue number.
pylonmcp_get_issue_messagesRetrieve all messages and replies for a specific issue.Read-onlyGet Issue Messages
Retrieve all messages and replies for a specific issue.
Inputs
issuestringrequired- The issue ID (UUID) or issue number.
pylonmcp_get_meRetrieve the profile of the currently authenticated user.Read-onlyGet Me
Retrieve the profile of the currently authenticated user.
Inputs
This tool takes no inputs.
pylonmcp_get_milestoneRetrieve a single milestone by its ID.Read-onlyGet Milestone
Retrieve a single milestone by its ID.
Inputs
milestone_idstringrequired- The milestone ID to get details for.
pylonmcp_get_milestonesList milestones, optionally filtered by project or account.Read-onlyGet Milestones
List milestones, optionally filtered by project or account.
Inputs
account_idstring- ID of the account to associate with this resource.
limitinteger- Maximum number of items to return.default
50 project_idstring- Project ID to filter milestones by.
pylonmcp_get_projectRetrieve a single project by its ID.Read-onlyGet Project
Retrieve a single project by its ID.
Inputs
project_idstringrequired- The project ID to get details for. Required.
pylonmcp_get_project_templatesList available project templates, optionally filtered by name.Read-onlyGet Project Templates
List available project templates, optionally filtered by name.
Inputs
limitinteger- Maximum number of items to return.default
50 namestring- Optional case-insensitive template name filter.
pylonmcp_get_projectsList projects, optionally filtered by account and archived status.Read-onlyGet Projects
List projects, optionally filtered by account and archived status.
Inputs
account_idstring- ID of the account to associate with this resource.
include_archivedboolean- Whether to include archived projects. Defaults to false.default
false limitinteger- Maximum number of items to return.default
50
pylonmcp_get_taskRetrieve a single task by its ID.Read-onlyGet Task
Retrieve a single task by its ID.
Inputs
task_idstringrequired- The task ID to get details for. Required.
pylonmcp_get_tasksList tasks, optionally filtered by project, account, and status.Read-onlyGet Tasks
List tasks, optionally filtered by project, account, and status.
Inputs
account_idstring- ID of the account to associate with this resource.
limitinteger- Maximum number of items to return.default
50 project_idstring- The project ID to filter tasks by.
statusesarray- Filter by task statuses.
pylonmcp_get_userRetrieve a single user by their ID or email.Read-onlyGet User
Retrieve a single user by their ID or email.
Inputs
userstringrequired- The user ID (UUID).
pylonmcp_search_accountsSearch accounts by name, domain, owner, tags, or custom field filters.Read-onlySearch Accounts
Search accounts by name, domain, owner, tags, or custom field filters.
Inputs
cursorstring- Pagination cursor from the previous response to fetch the next page.
custom_field_filtersarray- Filter by custom fields. Each filter specifies a custom field slug, operator, and value(s). For user-type fields, pass a Pylon user name or ID as the value - names will be resolved to Pylon user IDs automatically.
domainstring- Filter by domain (accounts containing this domain).
external_idstring- Filter by external ID.
limitinteger- Maximum number of items to return.default
25 namestring- Filter by account name (partial match).
ownerstring- Filter by account owner. Accepts a user ID or name (partial match).
tagsarray- Filter by tags. Returns accounts containing any of the specified tags.
pylonmcp_search_issuesSearch issues by account, assignee, state, tags, type, and date range.Read-onlySearch Issues
Search issues by account, assignee, state, tags, type, and date range.
Inputs
accountstring- Filter by account. Accepts either an account ID or a name (partial match).
assigneestring- Filter by assignee. Accepts either a user ID or a name (partial match).
created_afterstring- Filter for issues created after this time (RFC3339 format).
created_beforestring- Filter for issues created before this time (RFC3339 format).
cursorstring- Pagination cursor from the previous response to fetch the next page.
custom_field_filtersarray- Filter by custom fields. Each filter specifies a custom field slug, operator, and value(s). For user-type fields, pass a Pylon user name or ID as the value - names will be resolved to Pylon user IDs automatically.
is_issue_groupboolean- Filter by whether the issue is an issue group. Pass true to get only issue groups, false to exclude them.
limitinteger- Maximum number of items to return.default
25 requesterstring- Filter by requester. Accepts either a contact ID or a name (partial match).
statesarray- Filter by issue states (inclusion). Accepts built-in slugs (new, waiting_on_you, waiting_on_customer, on_hold, closed) and custom state slugs.
states_not_inarray- Exclude issues in these states. Accepts built-in slugs (new, waiting_on_you, waiting_on_customer, on_hold, closed) and custom state slugs.
tagsarray- Filter by tags. Returns issues containing any of the specified tags.
team_idstring- Filter by team ID. Returns issues assigned to the specified team.
typestring- Filter by issue type.one of
conversationticket
pylonmcp_search_projectsSearch projects by text, account, owner, status, and archived state.Read-onlySearch Projects
Search projects by text, account, owner, status, and archived state.
Inputs
account_idstring- ID of the account to associate with this resource.
include_archivedboolean- Whether to include archived projects. Defaults to false.default
false limitinteger- Maximum number of items to return.default
50 owner_idstring- ID of the user who owns this resource.
search_textstring- Search text for project names.
statusesarray- Filter by project statuses.
pylonmcp_search_tasksSearch tasks by text, project, account, assignee, and status.Read-onlySearch Tasks
Search tasks by text, project, account, assignee, and status.
Inputs
account_idstring- ID of the account to associate with this resource.
assignee_idstring- ID of the user to assign this resource to.
limitinteger- Maximum number of items to return.default
50 project_idstring- The project ID to filter tasks by.
search_textstring- Search text for full-text search across task titles.
statusesarray- Filter by task statuses.
pylonmcp_create_attachmentUpload a base64-encoded file to Pylon and return its attachment ID and URL.WriteCreate Attachment
Upload a base64-encoded file to Pylon and return its attachment ID and URL. Files are limited to 5 MB decoded and are not attached to an issue or message.
Inputs
content_base64stringrequired- Base64-encoded file bytes. Max 5 MB decoded.
filenamestringrequired- Filename including extension. Max 191 characters.
descriptionstring- Optional description of the attachment.
pylonmcp_create_issueCreate a new issue in Pylon with a title, body, and account.WriteCreate Issue
Create a new issue in Pylon with a title, body, and account. Optionally assign a requester, priority, team, and tags.
Inputs
account_idstringrequired- ID of the account to associate with this resource.
body_htmlstringrequired- The HTML content of the body of the issue. Required.
titlestringrequired- The title of the issue. Required.
assignee_idstring- ID of the user to assign this resource to.
prioritystring- The priority of the issue.one of
urgenthighmediumlow requester_idstring- The ID of the requester (contact) that this issue is on behalf of.
tagsarray- An array of tags to set on the issue.
team_idstring- The ID of the team to assign the issue to.
pylonmcp_create_milestoneCreate a milestone within a project.WriteCreate Milestone
Create a milestone within a project. Optionally set a due date and account.
Inputs
namestringrequired- Milestone name.
project_idstringrequired- Project ID for this milestone.
account_idstring- ID of the account to associate with this resource.
due_datestring- Due date in RFC3339 format.
pylonmcp_create_projectCreate a project for an account.WriteCreate Project
Create a project for an account. Provide a name or a project_template_id to scaffold milestones and tasks from a template.
Inputs
account_idstringrequired- ID of the account to associate with this resource.
customer_portal_visibleboolean- Whether this project is visible in the customer portal.
description_htmlstring- Project description as HTML.
end_datestring- End date in RFC3339 format.
namestring- Project name. Required unless project_template_id is provided.
owner_idstring- ID of the user who owns this resource.
owner_typestring- Owner type. Defaults to user when owner_id is provided.one of
usercontact project_template_idstring- Project template ID to scaffold tasks, milestones, and subtasks from.
start_datestring- Start date in RFC3339 format.
statusstring- Project status.one of
not_startedin_progresscompleted
pylonmcp_create_project_from_templateCreate a project from a template, copying its milestones, tasks, and subtasks.WriteCreate Project From Template
Create a project from a template, copying its milestones, tasks, and subtasks. Optionally override name, dates, owner, and status.
Inputs
account_idstringrequired- ID of the account to associate with this resource.
project_template_idstringrequired- Project template ID to use.
customer_portal_visibleboolean- Optional customer portal visibility override.
description_htmlstring- Optional project description override as HTML.
end_datestring- Optional end date override in RFC3339 format.
namestring- Optional project name override.
owner_idstring- ID of the user who owns this resource.
start_datestring- Optional start date override in RFC3339 format.
statusstring- Optional project status override.one of
not_startedin_progresscompleted
pylonmcp_create_taskCreate a new task with a title.WriteCreate Task
Create a new task with a title. Optionally link it to an account, project, milestone, or parent task.
Inputs
titlestringrequired- The title of the task. Required.
account_idstring- ID of the account to associate with this resource.
assignee_idstring- ID of the user to assign this resource to.
body_htmlstring- The body HTML content of the task.
customer_portal_visibleboolean- Whether the task is visible in the customer portal.
due_datestring- The due date for the task in RFC3339 format.
milestone_idstring- The ID of the milestone that this task belongs to.
parent_task_idstring- The ID of the parent task, to create this as a subtask.
project_idstring- The ID of the project that this task belongs to.
statusstring- The status of the task.one of
not_startedin_progresscompleted
pylonmcp_update_milestoneUpdate a milestone name or due date by its ID.WriteUpdate Milestone
Update a milestone name or due date by its ID.
Inputs
milestone_idstringrequired- The milestone ID to update.
due_datestring- Due date in RFC3339 format. Pass empty string to clear.
namestring- Milestone name.
pylonmcp_update_projectUpdate project details such as name, status, dates, owner, and visibility by its ID.WriteUpdate Project
Update project details such as name, status, dates, owner, and visibility by its ID.
Inputs
project_idstringrequired- The project ID to update.
customer_portal_visibleboolean- Whether this project is visible in the customer portal.
description_htmlstring- Project description as HTML.
end_datestring- End date in RFC3339 format. Pass empty string to clear.
is_archivedboolean- Whether this project is archived.
namestring- Project name.
owner_idstring- ID of the user who owns this resource.
start_datestring- Start date in RFC3339 format. Pass empty string to clear.
statusstring- Project status.one of
not_startedin_progresscompleted
pylonmcp_update_taskUpdate a task title, status, assignee, due date, or other fields by its ID.WriteUpdate Task
Update a task title, status, assignee, due date, or other fields by its ID.
Inputs
task_idstringrequired- The ID of the task to update. Required.
account_idstring- ID of the account to associate with this resource.
assignee_idstring- ID of the user to assign this resource to.
body_htmlstring- The body HTML content of the task.
customer_portal_visibleboolean- Whether the task is visible in the customer portal.
due_datestring- The due date for the task in RFC3339 format. Pass empty string to clear.
milestone_idstring- The ID of the milestone. Pass empty string to clear.
project_idstring- The ID of the project. Pass empty string to clear.
statusstring- The status of the task.one of
not_startedin_progresscompleted titlestring- The title of the task.
pylonmcp_delete_taskPermanently delete a task by its ID.DestructiveDelete Task
Permanently delete a task by its ID.
Inputs
task_idstringrequired- The ID of the task to delete. Required.
pylonmcp_update_accountUpdate an account name, owner, tags, or custom fields by its ID.DestructiveUpdate Account
Update an account name, owner, tags, or custom fields by its ID.
Inputs
account_idstringrequired- ID of the account to associate with this resource.
custom_fieldsobject- Custom field values to set. Keys are custom field slugs (use get_custom_fields with object_type 'account' to discover available slugs), values are the field values to set. For multi-select fields, use comma-separated values.
namestring- The new name for the account.
owner_idstring- ID of the user who owns this resource.
tagsarray- An array of tags to set on the account. This replaces all existing tags.
pylonmcp_update_issueUpdate an issue state, assignee, team, or tags by its ID.DestructiveUpdate Issue
Update an issue state, assignee, team, or tags by its ID.
Inputs
issue_idstringrequired- The ID or number of the issue to update. Required.
assignee_idstring- ID of the user to assign this resource to.
custom_fieldsobject- Custom field values to set. Keys are configured issue-field slugs and values are the field values to set. For multi-select fields, use comma-separated values.
statestring- The state to set the issue to. Standard values: new, waiting_on_you, waiting_on_customer, on_hold, closed. Custom status slugs are also accepted.
tagsarray- An array of tags to set on the issue. This replaces all existing tags.
team_idstring- The ID of the team to assign the issue to. Pass empty string to remove team assignment.
pylonmcp_upload_account_filesUpload one or more files to an account.DestructiveUpload Account Files
Upload one or more files to an account. Each file requires a filename and base64-encoded content.
Inputs
account_idstringrequired- ID of the account to associate with this resource.
filesarrayrequired- Files to upload. 1 to 5 files per call.
No tools match.