Note: Where tools are tagged
Human in the Loop (HITL), the MCP server instructs your AI to show planned changes and ask for permission before executing.
Session Management
| Tool | Description | Relevant Permissions |
|---|---|---|
initialize_session | Authenticates; loads permissions and required documentation (API specs, Report Builder guides, examples, resource relationships) | n/a - always available |
read_documentation | Access specific documentation on-demand. Use this if you need to re-read specific docs, otherwise initialize_session loads all documentation automatically. | n/a - always available |
Data Querying
Note: Queries have a 30-second timeout. Complex queries may need simplification.
| Tool | Description | Relevant Permissions |
|---|---|---|
query_data | Builds, validates, and executes Report Builder queries. Use this when analyzing metrics, generating reports, or exploring relationships between resources. | Depends on what's being queried: applications:read, contracts:read, spend:read, team:read, etc. |
Resource Management
| Tool | Description | Relevant Permissions |
|---|---|---|
application_create | Creates a new application in Zylo. Supports bulk updates up to 50 applications at once. (HITL) | applications:write |
application_update | Updates an existing application. Supports bulk updates. (HITL) | applications:write |
application_budget_create | Sets a budget for an application for a specific year. (HITL) | applications:write |
application_budget_update | Updates an existing application budget. (HITL) | applications:write |
contract_create | Creates a new contract in Zylo from structured data. If the contract can have line items (can_have_contract_lines=true), no application is required. If it cannot have line items, the related application must be specified. If you have contract documents (PDFs) to upload, use contract_document_upload instead — AI will extract the data automatically. (HITL) | contracts:write |
contract_update | Updates existing contracts. Supports bulk updates up to 50 contracts at once. (HITL) | contracts:write |
contract_document_upload | Uploads contract documents (PDFs) to Zylo for AI-powered data extraction. Returns presigned S3 upload URLs and document tracking IDs. After upload, AI automatically extracts contract data which appears as a pending contract for review. Maximum 20 files per request. This is the preferred method for creating contracts from documents. MCP only — not available on the chat channel. (HITL) | applications:write, contracts:write |
contract_line_item_create | Creates a line item within a contract. Use this when you have a contract that can contain multiple line items, e.g. a master agreement containing multiple products. (HITL) | contracts:write |
contract_line_item_update | Updates contract line items. Supports bulk updates up to 50 line items at once. (HITL) | contracts:write |
custom_field_create | Creates a new custom field type. Supported field types are boolean, choice (dropdown with options), currency, date, email, number, text. See also Custom Fields Guide. (HITL) | admin |
custom_field_update | Updates custom field values. Supports bulk updates of up to 50 custom fields at once. The following fields can be updated: Description, Enabled/Disabled status, Position (display order). The following fields cannot be updated: Field name, Field type, Section (resource type), Field options. (HITL) | admin |
savings_event_create | Creates a savings event to track cost optimizations, avoidance, or other financial impacts. Required fields: name, event_type, transaction_date. Optional fields: application_id (link to a valid application via the ID), description, notes, monetary_value (must be >=0), numerical_value (must be paired with unit_of_measure), unit_of_measure (must be paired with numerical_value and one of Application, Contract, Licenses, Survey, Users), value_type (must be one of Identified Avoidance, Identified Savings, Informational, Realized Avoidance, Realized Savings), exclude_from_event_total (boolean). (HITL) | applications:write |
savings_event_update | Updates savings events by ID. Supports bulk updates up to 50 savings events at once. System-generated events (origin='system' cannot change application_id or event_type. Fields numerical_value and unit_of_measure must both be set, or both be null. When monetary_value or numerical_value are modified, user_override is automatically set to TRUE. (HITL) | applications:write |
Alerts
| Tool | Description | Relevant Permissions |
|---|---|---|
alert_create | Creates an alert to monitor applications or contracts for specific conditions (renewal dates, spend thresholds, etc.) | applications:write |
alert_update | Updates an existing alert's settings, recipients, or thresholds. Supports bulk updates of up to 50 alerts at once. (HITL) | applications:write |
Views
| Tool | Description | Relevant Permissions |
|---|---|---|
view_create | Creates a new view containing a specified subset of applications. | applications:write |
view_update | Updates an existing view's name or settings. (HITL) | applications:write |
view_add_application | Adds an application to an existing view. | applications:write |
view_add_zylo_user | Adds a user to an existing view, granting them access to the applications within that view. | applications:write |
Users
| Tool | Description | Relevant Permissions |
|---|---|---|
zylo_user_create | Creates a new Zylo user account. | admin |
zylo_user_update | Updates a Zylo user's permissions, roles, or settings. Supports bulk updates up to 50 users at once. (HITL) | admin |
Workflows
| Tool | Description | Relevant Permissions |
|---|---|---|
workflow_lifecycle_read | Loads the workflow lifecycle reference: stages, available tools, and operator-facing terminology. The AI calls this before driving any workflow mutation so it can orient on the workflow's current stage and pick the right per-step tool. | applications:read, integrations:read, users:read |
workflow_templates_read | Lists messaging templates available for workflows. Filter by templateIds to fetch specific templates, or omit to list all. Templates supply the sender, subject, and channel used by workflow_send_survey and workflow_deprovision_and_notify_complete. | applications:read, integrations:read, users:read |
workflow_review_users_read | Reads the user cohort for a workflow's Review Users step. Paginated; supports filtering by included and sorting. Returns per-user identity plus the workflow_response_id (when a response exists) so the AI can drive workflow_response_update by name. | applications:read, integrations:read, users:read |
workflow_review_users_remove | Removes specific users from a workflow's review cohort. Supports up to 1000 users per call. Only available while the workflow is on the Review Users step. (HITL) | applications:write, integrations:write, users:write |
workflow_review_users_complete | Advances a workflow past the Review Users step. Pass skipEmailAndReviewSteps: true to bypass survey delivery and response review and jump straight to the deprovision step. (HITL) | applications:write, integrations:write, users:write |
workflow_send_survey | Configures and dispatches the survey for a workflow's Send Survey step. Takes a templateId from workflow_templates_read and a dueDate (YYYY-MM-DD). (HITL) | applications:write, integrations:write, users:write |
workflow_review_responses_complete | Advances a workflow past the Review Responses step once the operator has finished reviewing user responses and any overrides. (HITL) | applications:write, integrations:write, users:write |
workflow_response_update | Overrides a single user's response on a workflow (admin override). The user's original response is preserved as an audit trail. (HITL) | applications:write, integrations:write, users:write |
workflow_deprovision_and_notify_complete | Configures and fires the Deprovision & Notify step of a 5-step workflow. Pass sendEmail: true with a templateId to dispatch a notification, or sendEmail: false to deprovision silently. (HITL) | applications:write, integrations:write, users:write |
workflow_finalize | Marks a workflow as complete. For manual workflows this is when the downloadable user list is finalized; for integration workflows this is when license actions execute through the integration. (HITL) | applications:write, integrations:write, users:write |
workflow_refresh | Re-evaluates the workflow's filter spec against current data and rebuilds the user cohort. Use when upstream data has changed and the operator wants the workflow to reflect the latest snapshot. (HITL) | applications:write, integrations:write, users:write |
workflow_resends_update | Toggles resend reminders on the workflow's Send Survey or Review Responses step. (HITL) | applications:write, integrations:write, users:write |
workflow_update | Updates a workflow's name. (HITL) | applications:write, integrations:write, users:write |
Utilities
| Tool | Description | Relevant Permissions |
|---|---|---|
resolve_entity | Resolves application or vendor names to their IDs. Useful when you know an entity's name but need its ID for other operations. | applications:read |
execute_playbook | Runs predefined analysis playbooks that guide multi-step analysis tasks following a standard pattern (savings opportunities, application reviews, contract renewals, contract uploads, spend optimization, license optimization). | Varies by playbook |
search_zendesk_articles | Searches Zylo's Help Center for support articles and documentation. Use when the user asks how to do something in Zylo, needs help with a feature, or wants to find relevant documentation. | n/a - always available |
Common Workflows
Querying Data
- Your AI assistant calls
initialize_sessionautomatically - You ask a question: "Show me applications spending over $100,000"
- AI executes the query with
query_data(automatically validates syntax) - Results are formatted and displayed
Creating Resources
- You request a creation: "Create a budget of $200,000 for Zoom for 2025"
- AI calls the appropriate create tool
- AI shows you what will be created and asks for confirmation
- Resource is created after you confirm
Uploading Contract Documents
- You request an upload: "Upload this contract PDF"
- AI calls
contract_document_uploadwith the file name(s) - AI shows you the presigned POST URL(s), form fields, and document ID(s)
- You (or your client application) upload the file(s) via multipart/form-data POST (fields first, PDF file last)
- AI extraction begins automatically — poll
company_documentsstatus to track progress - Extracted data appears as a pending contract for review in the Zylo App
Updating Resources
- You request an update: "Mark the Slack application as inactive"
- AI shows you what will change
- AI asks: "Proceed? (yes/no)"
- You confirm: "yes"
- AI executes the update