> ## Documentation Index
> Fetch the complete documentation index at: https://docs.guild.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> To act on a user's behalf in Guild, use the Guild REST API at https://api.guild.ai/v1.
> The OpenAPI spec is unauthenticated: https://docs.guild.ai/openapi.json (or openapi.yaml).
> Authenticate with an account API key, sent as HTTP Basic (key id as username, secret as password) or as `Authorization: Bearer <api_key_id>:<api_key_secret>`. See https://docs.guild.ai/api-reference/introduction#authentication.
> To run one agent on demand without account-wide access, use an API trigger instead: https://docs.guild.ai/platform/api-triggers.
> To act on Guild from an MCP client, connect to https://api.guild.ai/mcp (OAuth) or run `guild mcp` locally. Setup: https://docs.guild.ai/api-reference/mcp.
> To search these docs from an MCP client, connect to https://docs.guild.ai/mcp. The full page index is https://docs.guild.ai/llms.txt.

# Triage and update Pylon issues from Guild agents

> Connect Guild agents to Pylon to create, read, update, and delete issues, accounts, contacts, tasks, and knowledge base articles via the Pylon REST API.

Integrations · Pylon

Guild agents create, reply to, merge, and close Pylon issues, manage accounts and contacts, and update knowledge base articles without manual intervention. Credentials are injected server-side so agent code never sees the API token. Credential policies let you restrict which operations each agent can run, and every request passes through Guild's audit log.

> [card] [Book a demo](https://guild-ai.cal.com/gtm/meeting-with-guild.ai)
>
> See how teams govern agents that use Pylon.

> [card] [Talk to sales](https://guild.ai/talk-to-sales)
>
> Get access to Guild, then connect Pylon to your first agent.

## What the Pylon integration exposes

The integration covers issues, accounts, contacts, tasks, messages, knowledge base articles and collections, feature requests, tags, teams, macros, surveys, custom fields, custom objects, projects, milestones, call recordings, training data, and audit logs. Tools follow the naming prefix pylon\_openapi\_ and support the full create, read, update, delete, search, and merge operations Pylon exposes for each object type. Agents can also post internal notes, send customer-facing replies, generate AI responses on issues, and redact message content.

## How it works

**1. Get your Pylon API token**

Generate an API token in Pylon. Guild sends it as a bearer token in the Authorization header on every request.

**2. Connect the credential in Guild**

Go to Access & setup > Credentials, click Connect, select pylon-openapi, and paste the token into API Key. The credential can be scoped to your whole account, one workspace, a single member, or one agent. See [Credentials](https://docs.guild.ai/platform/credentials.md) for details.

**3. Import and configure the tools**

Import PylonOpenapiTools from the integration package and spread it into your agent's tools object. Use pick() to include only the tools your agent needs, referencing the pylon\_openapi\_ prefix to identify them. See [Tool sets](https://docs.guild.ai/sdk/tools.md) for the pick() API.

## Why Pylon access needs governing

Pylon holds customer issues, account records, contact details, and feature requests. An agent with unrestricted access could permanently delete accounts, redact message content, or merge issues in ways that cannot be undone. Guild's credential proxy enforces credential policies before any request reaches Pylon, so you can write ALLOW and DENY rules that limit agents to specific operations, such as read-only issue access or replies only, without changing agent code. Rules can be scoped to individual agents or workspaces on a single shared credential. See [Credential policies](https://docs.guild.ai/platform/credential-policies.md) for rule syntax and precedence.

Guild stores the API token server-side and injects it at request time. Agent code, prompts, and containers never see it. You can scope a credential to one workspace, one member, or one installed agent so that access does not spread beyond its intended boundary. See [Credentials](https://docs.guild.ai/platform/credentials.md) for scoping options. Broad write access is the starting point; narrow it with policies before deploying to production.

## About the Pylon integration

Agents can create, read, update, and delete issues, accounts, contacts, and tasks in Pylon. They can also manage knowledge base articles and collections, log activities, and handle feature requests. A Pylon API token is required to connect. The integration is `guildai~pylon-openapi`.

## Authentication

* **Type:** API key
* **Header:** Guild sends the key as a bearer token in the `Authorization` header

### Setup

**1. Connect Pylon**

In Guild, go to **Access & setup > Credentials**, click **Connect**, select **pylon-openapi**, and paste the key into **API Key**.

See [Credentials](https://docs.guild.ai/platform/credentials.md) for workspace, member, and agent-scoped credentials.

## Usage

```typescript theme={null}
import { PylonOpenapiTools } from "@guildai-services/guildai~pylon-openapi"
import { llmAgent } from "@guildai/agents-sdk"

export default llmAgent({
  systemPrompt: "You work with Pylon.",
  tools: { ...PylonOpenapiTools },
})
```

### Selecting specific tools

Tools are named with the `pylon_openapi_` prefix. Use [`pick()`](https://docs.guild.ai/sdk/tools#selecting-specific-tools) to include only what your agent needs.

## Tools

Tools in the latest published version of `guildai~pylon-openapi`:

> [accordion] All 173 tools
>
> | Tool | What it does |
> | - | - |
> | `pylon_openapi_add_issue_followers` | By default, adds followers. |
> | `pylon_openapi_add_issue_group_children` | Adds one or more child issues atomically. |
> | `pylon_openapi_create_account` | Creates a new account with the specified name and optional metadata. |
> | `pylon_openapi_create_account_highlight` | Creates a new highlight on an account. |
> | `pylon_openapi_create_account_notebook_note` | Creates a note in a specific Notes block in an account notebook. |
> | `pylon_openapi_create_account_relationship` | Creates a parent or partner relationship for the account in the URL. |
> | `pylon_openapi_create_activity` | The \{id} parameter accepts either: Internal account ID (UUID format). |
> | `pylon_openapi_create_article` | Creates a new article within a knowledge base. |
> | `pylon_openapi_create_attachment` | Uploads a file as an attachment. |
> | `pylon_openapi_create_call_recording` | Creates a call recording from your own call recorder. |
> | `pylon_openapi_create_collection` | Creates a new collection within a knowledge base. |
> | `pylon_openapi_create_contact` | Creates a new contact with the specified email and optional metadata. |
> | `pylon_openapi_create_custom_field` | Creates a new custom field definition for the specified object type. |
> | `pylon_openapi_create_custom_field_select_option` | Adds an option to a select or multiselect custom field. |
> | `pylon_openapi_create_custom_object` | Creates a new custom object instance of the given type. |
> | `pylon_openapi_create_feature_request` | Creates a new feature request. |
> | `pylon_openapi_create_feature_request_evidence` | Creates a manual evidence record linking a customer account to a feature request. |
> | `pylon_openapi_create_issue` | Creates a new issue and its first message. |
> | `pylon_openapi_create_issue_ai_response` | Generates an AI response for the specified issue using the given agent. |
> | `pylon_openapi_create_issue_draft_reply` | Creates a private customer-reply draft without sending it. |
> | `pylon_openapi_create_issue_group` | Creates an issue group and attaches its initial child issues atomically. |
> | `pylon_openapi_create_issue_note` | Posts an internal note on an issue thread. |
> | `pylon_openapi_create_issue_reply` | Sends a customer-facing reply on an issue, visible to the requester. |
> | `pylon_openapi_create_issue_thread` | Creates a new internal thread on an issue. |
> | `pylon_openapi_create_macro` | Creates a new macro within the specified macro group. |
> | `pylon_openapi_create_milestone` | Creates a new milestone within a project. |
> | `pylon_openapi_create_project` | Creates a new project for an account. |
> | `pylon_openapi_create_route_redirect` | Creates a path redirect within a knowledge base, mapping a source path to an article or collection. |
> | `pylon_openapi_create_tag` | Creates a new tag with the specified value and object type. |
> | `pylon_openapi_create_task` | Creates a new task with a title and optional metadata. |
> | `pylon_openapi_create_task_comment` | Creates a new comment on a task. |
> | `pylon_openapi_create_team` | Creates a new team with a name and optional member list. |
> | `pylon_openapi_create_training_data` | Creates a new training data configuration for the organization. |
> | `pylon_openapi_delete_account` | Permanently deletes an account by ID or external ID. |
> | `pylon_openapi_delete_account_highlight` | Permanently deletes an account highlight by ID. |
> | `pylon_openapi_delete_account_relationship` | Deletes an account relationship by ID. |
> | `pylon_openapi_delete_article` | Permanently deletes an article from the knowledge base. |
> | `pylon_openapi_delete_call_recording` | Permanently deletes a call recording by its Pylon ID. |
> | `pylon_openapi_delete_collection` | Permanently deletes a collection and all articles within it from the knowledge base. |
> | `pylon_openapi_delete_contact` | Permanently deletes a contact by ID or external ID. |
> | `pylon_openapi_delete_custom_field_select_option` | Deletes an option and asynchronously clears it from affected objects. |
> | `pylon_openapi_delete_custom_object` | Deletes a custom object instance. |
> | `pylon_openapi_delete_email_suppression` | Removes the suppression so Pylon resumes sending email to the address. |
> | `pylon_openapi_delete_feature_request` | Permanently deletes a feature request and its associated evidence. |
> | `pylon_openapi_delete_issue` | Permanently deletes an issue by ID. |
> | `pylon_openapi_delete_macro` | Permanently deletes a macro by ID. |
> | `pylon_openapi_delete_message` | Permanently deletes a message from an issue and its connected external system. |
> | `pylon_openapi_delete_milestone` | Permanently deletes a milestone by ID. |
> | `pylon_openapi_delete_project` | Permanently deletes a project by ID. |
> | `pylon_openapi_delete_tag` | Permanently deletes a tag by ID. |
> | `pylon_openapi_delete_task` | Permanently deletes a task by ID. |
> | `pylon_openapi_delete_task_comment` | Deletes an existing comment. |
> | `pylon_openapi_delete_training_data_documents` | Removes documents from a training data configuration by document ID or external ID. |
> | `pylon_openapi_get_account` | Returns a single account by ID or external ID. |
> | `pylon_openapi_get_account_notebook_notes` | Returns notes from a specific Notes block in an account notebook. |
> | `pylon_openapi_get_account_relationships` | Returns the parent-child and partner-client relationships where the account is the child or client. |
> | `pylon_openapi_get_accounts` | Returns a paginated list of accounts for the organization. |
> | `pylon_openapi_get_activities` | Returns custom activities for the specified account, ordered from newest to oldest. |
> | `pylon_openapi_get_activity_types` | Returns all custom activity type definitions for the organization. |
> | `pylon_openapi_get_article` | Returns a single article by ID within the specified knowledge base. |
> | `pylon_openapi_get_article_feedback` | Returns a paginated list of knowledge base article feedback for the organization. |
> | `pylon_openapi_get_articles` | Returns a paginated list of articles for the specified knowledge base. |
> | `pylon_openapi_get_audit_logs` | Returns a paginated list of audit log entries for the organization. |
> | `pylon_openapi_get_call_recording` | Returns a single call recording by ID. |
> | `pylon_openapi_get_collection` | Returns a single collection by ID within the specified knowledge base. |
> | `pylon_openapi_get_collections` | Returns all collections for the specified knowledge base. |
> | `pylon_openapi_get_contact` | Returns a single contact by ID or external ID. |
> | `pylon_openapi_get_contacts` | Returns a paginated list of contacts for the organization. |
> | `pylon_openapi_get_custom_field` | Returns a single custom field definition by ID. |
> | `pylon_openapi_get_custom_fields` | Returns all custom field definitions for the specified object type. |
> | `pylon_openapi_get_custom_object` | Returns a single custom object by ID, including its custom field values. |
> | `pylon_openapi_get_custom_objects` | Returns paginated custom objects of the given type. |
> | `pylon_openapi_get_email_activities` | Returns email threads synced to the specified account from connected Gmail and Outlook inboxes, ordered by their latest email from newest to oldest. |
> | `pylon_openapi_get_email_suppressions` | Returns the email addresses Pylon will not send to, most recently suppressed first. |
> | `pylon_openapi_get_feature_request` | Returns a single feature request by ID. |
> | `pylon_openapi_get_issue` | Returns a single issue by ID or issue number. |
> | `pylon_openapi_get_issue_followers` | Returns the list of followers for the specified issue. |
> | `pylon_openapi_get_issue_messages` | Returns messages for the specified issue, including replies and internal notes, ordered from oldest to newest. |
> | `pylon_openapi_get_issues` | Returns a paginated list of issues created within a required time range (max 365 days). |
> | `pylon_openapi_get_issue_statuses` | Returns all issue statuses for the organization. |
> | `pylon_openapi_get_issue_survey_responses` | Returns paginated CSAT and custom survey responses associated with an issue. |
> | `pylon_openapi_get_issue_threads` | Returns all threads for the specified issue. |
> | `pylon_openapi_get_issue_voice_calls` | Returns voice call records for the specified phone issue. |
> | `pylon_openapi_get_knowledge_base` | Returns a single knowledge base by ID. |
> | `pylon_openapi_get_knowledge_bases` | Returns all knowledge bases for the organization. |
> | `pylon_openapi_get_knowledge_base_theme` | Returns a theme's editable files, including current draft and published content. |
> | `pylon_openapi_get_macro` | Returns a single macro by ID. |
> | `pylon_openapi_get_macro_groups` | Returns all macro groups for the organization. |
> | `pylon_openapi_get_macros` | Returns all macros for the organization. |
> | `pylon_openapi_get_me` | Returns the organization and user associated with the credentials used for authentication. |
> | `pylon_openapi_get_milestone` | Returns a single milestone by ID. |
> | `pylon_openapi_get_project` | Returns a single project by ID. |
> | `pylon_openapi_get_survey` | Returns a single survey by ID. |
> | `pylon_openapi_get_survey_responses` | Returns paginated survey responses visible to the caller, optionally filtered by time range, account, or contact. |
> | `pylon_openapi_get_surveys` | Returns all surveys for the organization. |
> | `pylon_openapi_get_tag` | Returns a single tag by ID. |
> | `pylon_openapi_get_tags` | Returns all tags for the organization. |
> | `pylon_openapi_get_task` | Returns a single task by ID. |
> | `pylon_openapi_get_task_comments` | Returns all comments for a task, ordered by creation time. |
> | `pylon_openapi_get_tasks` | Returns a paginated list of tasks for the organization. |
> | `pylon_openapi_get_task_statuses` | Returns all task statuses for the organization. |
> | `pylon_openapi_get_team` | Returns a single team by ID, with how it assigns issues and its recurring assignment schedule if it has one. |
> | `pylon_openapi_get_teams` | Returns all teams for the organization, each with how it assigns issues and its recurring assignment schedule if it has one. |
> | `pylon_openapi_get_ticket_form` | Returns a single ticket form by ID. |
> | `pylon_openapi_get_ticket_forms` | Returns all ticket forms for the organization. |
> | `pylon_openapi_get_training_data` | Returns a single training data configuration by ID. |
> | `pylon_openapi_get_user` | Returns a single user by ID. |
> | `pylon_openapi_get_user_roles` | Returns all user roles for the organization. |
> | `pylon_openapi_get_users` | Returns all users for the organization. |
> | `pylon_openapi_get_user_statuses` | Returns the built-in and custom user statuses for the organization. |
> | `pylon_openapi_import_contact` | Migration only. |
> | `pylon_openapi_import_issue` | Migration only. |
> | `pylon_openapi_import_messages` | Migration only. |
> | `pylon_openapi_import_project` | Migration only. |
> | `pylon_openapi_import_task` | Migration only. |
> | `pylon_openapi_link_external_incident` | Links an incident from one of the organization's connected incident systems (incident.io or Rootly). |
> | `pylon_openapi_link_external_issue` | By default, links external issues. |
> | `pylon_openapi_link_feature_request_external_issue` | By default, links the external issue and creates a backlink to the feature request in the source system. |
> | `pylon_openapi_link_task_external_issue` | By default, links the external issue. |
> | `pylon_openapi_link_task_issue` | Links the issue to the task by default. |
> | `pylon_openapi_list_training_data` | Returns all training data configurations for the organization. |
> | `pylon_openapi_mark_issues_as_spam` | Marks up to 100 email issues as spam. |
> | `pylon_openapi_merge_accounts` | Merges one or more accounts into a surviving account. |
> | `pylon_openapi_merge_contacts` | Merges a contact into a surviving contact. |
> | `pylon_openapi_merge_feature_requests` | Merges one or more feature requests into a surviving feature request. |
> | `pylon_openapi_merge_issues` | Merges one or more issues into a primary issue. |
> | `pylon_openapi_publish_knowledge_base_theme` | Promotes all current draft files to their published versions. |
> | `pylon_openapi_redact_message` | Permanently replaces a message's stored content with redacted\_body\_message and optionally deletes its attachments. |
> | `pylon_openapi_remove_issue_group_child` | Removes one child issue. |
> | `pylon_openapi_request_article_review` | Requests human and/or AI review on the article's current draft version. |
> | `pylon_openapi_search_accounts` | Optionally pass `search_text` for fuzzy matching. |
> | `pylon_openapi_search_audit_logs` | Returns a filtered, paginated list of audit log entries for the organization. |
> | `pylon_openapi_search_call_recordings` | Filterable fields and their allowed operators. |
> | `pylon_openapi_search_contacts` | Filterable fields and their allowed operators. |
> | `pylon_openapi_search_custom_objects` | Filterable fields and their allowed operators. |
> | `pylon_openapi_search_feature_requests` | Returns feature requests matching the given criteria. |
> | `pylon_openapi_search_issues` | Filterable fields and their allowed operators. |
> | `pylon_openapi_search_milestones` | Filterable fields and their allowed operators. |
> | `pylon_openapi_search_projects` | Filterable fields and their allowed operators. |
> | `pylon_openapi_search_surveys` | Filterable fields and their allowed operators. |
> | `pylon_openapi_search_tags` | Returns tags the caller can read, newest first, optionally narrowed to one object type and to values containing search\_text. |
> | `pylon_openapi_search_tasks` | Filterable fields and their allowed operators. |
> | `pylon_openapi_search_users` | Filterable fields and their allowed operators. |
> | `pylon_openapi_set_feature_request_portal_visibility` | Toggles portal visibility for a set of accounts on a feature request. |
> | `pylon_openapi_snooze_issue` | Snoozes an issue until the specified date and time. |
> | `pylon_openapi_submit_ticket_form` | Creates an issue from a configured ticket form. |
> | `pylon_openapi_update_account` | Updates an existing account by ID or external ID. |
> | `pylon_openapi_update_account_highlight` | Updates an existing account highlight. |
> | `pylon_openapi_update_accounts` | Updates multiple accounts in a single request. |
> | `pylon_openapi_update_article` | Updates an existing article. |
> | `pylon_openapi_update_call_recording` | Updates a call recording by ID. |
> | `pylon_openapi_update_collection` | Updates an existing collection. |
> | `pylon_openapi_update_contact` | Updates a contact by ID or external ID. |
> | `pylon_openapi_update_custom_field` | Updates a custom field definition. |
> | `pylon_openapi_update_custom_field_select_option` | Updates an option's slug, label, or AI description. |
> | `pylon_openapi_update_custom_object` | Updates a custom object. |
> | `pylon_openapi_update_custom_objects` | Applies the same update to multiple custom objects of the given type in a single request. |
> | `pylon_openapi_update_feature_request` | Updates an existing feature request. |
> | `pylon_openapi_update_issue` | Updates an existing issue. |
> | `pylon_openapi_update_issues` | Applies the same changes to up to 100 issues. |
> | `pylon_openapi_update_knowledge_base_theme` | Replaces one or more complete theme files in a single atomic draft update. |
> | `pylon_openapi_update_macro` | Updates an existing macro by ID. |
> | `pylon_openapi_update_message` | Replaces the body of a message and syncs the edit to its connected channel (Slack, Microsoft Teams, Discord, Google Chat, Telegram, or the chat widget). |
> | `pylon_openapi_update_milestone` | Updates an existing milestone. |
> | `pylon_openapi_update_project` | Updates an existing project. |
> | `pylon_openapi_update_tag` | Updates an existing tag. |
> | `pylon_openapi_update_task` | Updates an existing task. |
> | `pylon_openapi_update_task_comment` | Updates an existing comment. |
> | `pylon_openapi_update_team` | Updates an existing team, including how it assigns issues and its recurring assignment schedule. |
> | `pylon_openapi_update_user` | Updates an existing user. |
> | `pylon_openapi_upload_account_file` | Uploads one or more files to an account by ID or external ID. |
> | `pylon_openapi_upload_training_data_file_content` | Uploads plain text content as a training data document. |
> | `pylon_openapi_upload_training_data_files` | Uploads one or more files to a training data configuration. |

## Frequently asked questions

> [accordion] Can a Guild agent send a reply visible to the customer in Pylon?
>
> Yes. The pylon\_openapi\_create\_issue\_reply tool sends a customer-facing reply on an issue that is visible to the requester. A separate tool, pylon\_openapi\_create\_issue\_draft\_reply, creates a private draft without sending it.

> [accordion] Does Pylon send webhook events to Guild triggers?
>
> No. The catalog entry for guildai\~pylon-openapi lists no webhook events, so event-driven triggers from Pylon are not available. Agents must poll or be invoked directly.

> [accordion] How do I stop an agent from deleting accounts or contacts?
>
> Write a DENY rule in the credential policy targeting pylon\_openapi\_delete\_account and pylon\_openapi\_delete\_contact, or any pattern matching delete operations. Guild's credential proxy enforces the rule before the request reaches Pylon. See [Credential policies](https://docs.guild.ai/platform/credential-policies.md) for DENY rule syntax.

> [accordion] Can I give one agent its own Pylon token separate from the rest of the organization?
>
> Yes. Connect a dedicated credential from the installed agent's page and select Dedicated to this agent. That token is stored under the account that owns the workspace and is never used by other agents or workspaces. See [Credentials](https://docs.guild.ai/platform/credentials.md) for the full scoping options.

## Put a governed agent on Pylon this week

> [card] [Book a demo](https://guild-ai.cal.com/gtm/meeting-with-guild.ai)
>
> See how teams govern agents that use Pylon.

> [card] [Talk to sales](https://guild.ai/talk-to-sales)
>
> Get access to Guild, then connect Pylon to your first agent.

## Related

**Also runs on Guild:** [Front](https://docs.guild.ai/integrations/front-openapi.md) · [Intercom](https://docs.guild.ai/integrations/intercom-openapi.md) · [Zendesk](https://docs.guild.ai/integrations/zendesk.md)

**Read:** Docs: [Credential policies](https://docs.guild.ai/platform/credential-policies.md) · [Credentials](https://docs.guild.ai/platform/credentials.md) · [Tools in agents](https://docs.guild.ai/sdk/tools.md)
