Platforms
Each platform offers a fixed set of tools. Dangerous tools wait for an approval or an armed connection; see Getting started.
Twilio
Credentials. Your Account SID (starts with AC, under Account info in the Twilio Console), and a Standard API key made for DylrDev alone: its SID (starts with SK) and secret. Revoking that key in Twilio cuts DylrDev off.
| Tool |
What it does |
list_phone_numbers |
The account’s numbers and where their calls go |
list_flows |
Studio flows (IVRs and routing) |
get_flow |
One Studio flow’s full definition |
list_workspaces |
TaskRouter workspaces |
list_task_queues |
A workspace’s task queues |
list_workers |
A workspace’s workers and their activity |
create_task_queue |
Adds a task queue |
delete_task_queue |
Deletes a task queue. Dangerous |
Five9
Credentials. A Five9 user made for DylrDev alone (never a person’s login), its password, and the data center your domain is in (US, CA, UK, or EU). Give it a password login and these roles, in VCC Administrator under Users, then the Roles tab:
- Administrator, with web services access (User can use Administrator Services) and the permissions for what your AI should manage: campaigns and campaign profiles; lists, contact records, and the DNC list; users; dispositions, reason codes, IVR scripts, prompts, connectors, and variables. Leave off All administrators permissions.
- Reporting, with the report folders the AI may run.
- Supervisor, with the statistics views you want, only if you want live statistics. Each statistics call signs out any other statistics session of the same user, which is one more reason the user must be DylrDev’s alone.
Some writes are dangerous only sometimes: while the campaign they change is running, while a running campaign uses the list, profile, prompt, or IVR script, or when an IVR script calls out to an outside host.
Campaigns and profiles
| Tool |
What it does |
list_campaigns |
List campaigns. |
get_campaign |
Get a campaign. |
inspect_campaign |
Inspect a campaign. |
create_campaign |
Create a campaign. |
modify_campaign |
Modify a campaign. Dangerous while the campaign is running, and always for the recording upload (FTP) settings |
rename_campaign |
Rename a campaign. Dangerous while the campaign is running |
delete_campaign |
Delete a campaign. Dangerous |
control_campaign |
Start or stop a campaign. Dangerous |
manage_campaign_skills |
Add or remove campaign skills. Dangerous while the campaign is running |
manage_campaign_dispositions |
Add or remove campaign dispositions. Dangerous while the campaign is running |
manage_campaign_lists |
Attach or detach a dialing list. Dangerous while the campaign is running |
manage_campaign_dnis |
Attach or detach inbound numbers. Dangerous while the campaign is running, or when a number to attach isn’t unassigned |
list_campaign_profiles |
List campaign profiles. |
create_campaign_profile |
Create a campaign profile. |
modify_campaign_profile |
Modify a campaign profile. Dangerous while a running campaign uses the profile |
delete_campaign_profile |
Delete a campaign profile. Dangerous |
get_campaign_profile_filter |
Get a profile’s record filter. |
set_campaign_profile_criteria |
Change a profile’s record filter. Dangerous while a running campaign uses the profile |
set_campaign_profile_order |
Change a profile’s dialing order. Dangerous while a running campaign uses the profile |
| Tool |
What it does |
list_lists |
List dialing lists. |
create_list |
Create a dialing list. |
delete_list |
Delete a dialing list. Dangerous |
add_record_to_list |
Add a record to a list. Dangerous while the list is attached to a running campaign |
add_records_to_list |
Add records to a list. Dangerous |
remove_record_from_list |
Remove a record from a list. Dangerous |
get_import_result |
Check an import. |
search_contacts |
Search contacts. |
update_contact |
Update a contact. Dangerous unless it updates only a sole match |
update_contacts |
Update contacts in bulk. Dangerous |
delete_contact |
Delete a contact. Dangerous |
list_contact_fields |
List contact fields. |
create_contact_field |
Create a contact field. |
modify_contact_field |
Modify a contact field. Dangerous when it changes the type or mapTo, which can cut or reject stored data |
delete_contact_field |
Delete a contact field. Dangerous |
check_dnc |
Check do-not-call. |
add_to_dnc |
Add to do-not-call. |
remove_from_dnc |
Remove from do-not-call. Dangerous |
Users, skills, and agent groups
| Tool |
What it does |
list_users |
List users. |
get_user |
Get a user. |
create_user |
Create a user. Dangerous |
modify_user |
Modify a user. Dangerous |
delete_user |
Delete a user. Dangerous |
set_user_roles |
Change a user’s roles. Dangerous |
list_user_profiles |
List user profiles. |
list_skills |
List skills. |
get_skill_details |
List skills with their users. |
create_skill |
Create a skill. |
modify_skill |
Modify a skill. |
delete_skill |
Delete a skill. Dangerous |
manage_user_skills |
Give or take a user’s skill. Dangerous |
list_agent_groups |
List agent groups. |
create_agent_group |
Create an agent group. |
delete_agent_group |
Delete an agent group. Dangerous |
manage_agent_group_members |
Add or remove group members. Dangerous |
Dispositions, prompts, and domain setup
| Tool |
What it does |
list_dispositions |
List dispositions. |
create_disposition |
Create a disposition. |
modify_disposition |
Modify a disposition. Dangerous when it changes the type, typeParameters, or resetAttemptsCounter, which change how every campaign using it redials |
rename_disposition |
Rename a disposition. |
delete_disposition |
Delete a disposition. Dangerous |
list_call_variables |
List call variables. |
create_call_variable |
Create a call variable. |
delete_call_variable |
Delete a call variable. Dangerous |
get_reason_code |
Get a reason code. |
create_reason_code |
Create a reason code. |
modify_reason_code |
Modify a reason code. |
delete_reason_code |
Delete a reason code. Dangerous |
list_speed_dials |
List speed dials. |
create_speed_dial |
Create a speed dial. |
delete_speed_dial |
Delete a speed dial. Dangerous |
list_web_connectors |
List web connectors. |
create_web_connector |
Create a web connector. Dangerous |
delete_web_connector |
Delete a web connector. Dangerous |
list_prompts |
List prompts. |
create_tts_prompt |
Create a text-to-speech prompt. |
modify_tts_prompt |
Modify a text-to-speech prompt. Dangerous while a running campaign, its IVR script, or a skill queue they route to uses the prompt |
create_wav_prompt |
Create a recorded prompt. |
modify_wav_prompt |
Modify a recorded prompt. Dangerous while a running campaign, its IVR script, or a skill queue they route to uses the prompt |
delete_prompt |
Delete a prompt. Dangerous |
list_dnis |
List inbound numbers. |
get_dialing_rules |
Get dialing rules. |
get_vcc_configuration |
Get the domain configuration. |
get_api_usage |
Get API usage. |
IVR scripts
| Tool |
What it does |
list_ivr_scripts |
List IVR scripts. |
get_ivr_script |
Get an IVR script. |
create_ivr_script |
Create an IVR script. Dangerous when the definition calls out to any URL, host or web service (also inside encoded prompt payloads) |
modify_ivr_script |
Replace an IVR script’s definition. Dangerous when the definition calls out to any URL, host or web service (also inside encoded prompt payloads), or while a running campaign uses the script |
delete_ivr_script |
Delete an IVR script. Dangerous |
validate_ivr_flow |
Check an IVR flow. |
render_ivr_flow |
Draw an IVR flow. |
build_ivr_script |
Build an IVR script. Dangerous when the script calls out to a URL or host (a URL in prompt text counts), or when it replaces a script a running campaign uses; a dry run never is |
Reports and statistics
| Tool |
What it does |
run_report |
Run a report. |
get_report_result |
Get a report. |
get_realtime_stats |
Get real-time statistics. |
Genesys Cloud
Credentials. The region (the domain in your login address: login.mypurecloud.com means mypurecloud.com), and an OAuth client made for DylrDev alone, with grant type Client Credentials: its client ID and secret. Create it in Admin under Integrations, then OAuth, with a custom role from Admin under Roles / Permissions. Never give it Master Admin. Assign the role in every division, or DylrDev treats what it can’t see as possibly live.
Give the role the permissions for what your AI should do:
- Queues, skills, users, schedules:
routing:queue:view, routing:queue:add, routing:wrapupCode:view, routing:wrapupCode:add, routing:skill:view, routing:skill:create, directory:user:view, routing:schedule:view, routing:schedule:add, routing:scheduleGroup:view, routing:scheduleGroup:add. Assigning skills to users also needs routing:skill:assign.
- Outbound:
outbound:contactList:view, outbound:attemptLimits:view, outbound:callableTimeSet:view, outbound:dncList:view, outbound:campaign:view, outbound:campaignSequence:view, outbound:responseSet:view, scripter:publishedScript:view, and outbound:contactList:add, outbound:attemptLimits:add, outbound:callableTimeSet:add, outbound:dncList:add, outbound:dnc:add, outbound:campaign:add, outbound:campaignSequence:add. Adding contacts needs outbound:contact:add, and so DylrDev can see whether the list feeds anything live: outbound:messagingCampaign:view, outbound:emailCampaign:view, outbound:whatsAppCampaign:view, outbound:schedule:view, outbound:messagingCampaignSchedule:view, outbound:emailCampaignSchedule:view, outbound:whatsAppCampaignSchedule:view, outbound:campaignRule:view. Don’t grant outbound:campaign:edit: no tool turns a campaign on.
- Architect flows:
architect:flow:view, architect:flow:add, architect:flow:edit, architect:flow:publish, architect:flow:unlock, architect:userPrompt:view, architect:job:create, architect:job:view, architect:jobExport:create, architect:jobExport:view, architect:dependencyTracking:view.
- Virtual agents:
agentic:virtualAgent:view, agentic:virtualAgent:add, agentic:virtualAgentVersionJob:add.
- Knowledge:
knowledge:knowledgebase:view, knowledge:source:view, knowledge:knowledgeSetting:view, knowledge:synchronization:view, knowledge:source:add, knowledge:knowledgeSetting:add, knowledge:knowledgeSetting:edit. Uploading documents also needs knowledge:synchronization:add, knowledge:synchronization:upload, and knowledge:synchronization:edit.
- Data actions:
integrations:integration:view, integrations:action:view, and integrations:action:add and integrations:action:edit to create one.
- DID pools (optional):
telephony:plugin:all.
DylrDev keeps the OAuth access token between calls, sealed with the connection’s own key. Deleting the connection, or the OAuth client in Genesys, ends it.
Some writes are dangerous only sometimes: adding contacts to a list something live uses, publishing over a published or locked flow, publishing an AVA to production, and syncing knowledge that a published AVA or flow answers from. Names in writes must match exactly (or pass the id); a near match is refused, never guessed.
Org, queues, users, and schedules
| Tool |
What it does |
list_divisions |
List divisions. |
list_did_pools |
List DID pools. |
list_queues |
List queues. |
get_queue |
Get a queue. |
create_queue |
Create a queue. |
list_wrapup_codes |
List wrap-up codes. |
create_wrapup_code |
Create a wrap-up code. |
list_users |
List users. |
get_user |
Get a user. |
list_skills |
List skills. |
create_skill |
Create a skill. |
assign_user_skill |
Assign a skill to a user. Dangerous |
list_schedules |
List schedules. |
create_schedule |
Create a schedule. |
create_schedule_group |
Create a schedule group. |
Outbound
| Tool |
What it does |
list_contact_lists |
List contact lists. |
get_contact_list |
Get a contact list. |
create_contact_list |
Create a contact list. |
add_contacts |
Add contacts. Dangerous when the list feeds a campaign, sequence, schedule, or rule that isn’t off, or that can’t be ruled out |
create_attempt_limits |
Create attempt limits. |
create_callable_time_set |
Create a callable time set. |
create_dnc_list |
Create a DNC list. |
list_campaigns |
List campaigns. |
get_campaign |
Get a campaign. |
create_campaign |
Create a campaign. |
create_campaign_sequence |
Create a campaign sequence. |
list_outbound_assets |
List outbound building blocks. |
render_cadence |
Render a cadence. |
Architect flows
| Tool |
What it does |
list_flows |
List flows. |
get_flow |
Get a flow. |
get_flow_configuration |
Get a flow’s configuration. |
list_prompts |
List prompts. |
render_flow |
Draw a flow. |
export_flow |
Export a flow. |
build_flow |
Build a flow. |
publish_flow |
Publish a flow. Dangerous when it could replace a published, active, or locked flow |
get_flow_job |
Check a flow job. |
unlock_flow |
Unlock a flow. Dangerous |
Virtual agents (AVA), knowledge, and data actions
| Tool |
What it does |
ava_playbook |
Load an AVA playbook. |
list_avas |
List AVAs. |
get_ava |
Get an AVA. |
create_ava |
Create an AVA. |
get_ava_version |
Get an AVA version. |
create_ava_version |
Create an AVA version. |
publish_ava_version |
Publish an AVA version. Dangerous when publishing to production |
get_ava_publish_job |
Check an AVA publish job. |
list_data_actions |
List data actions. |
get_data_action_schema |
Get a data action’s schemas. |
create_data_action |
Create a data action. Dangerous |
list_knowledge_assets |
List knowledge assets. |
ava_chat_start |
Start an AVA test chat. Dangerous |
ava_chat_send |
Send an AVA test chat message. Dangerous |
ava_chat_end |
End an AVA test chat. |
ava_run_scripted_scenario |
Run a scripted AVA scenario. Dangerous |
ava_validate_trajectory |
Check an attempt’s trajectory. |
validate_knowledge |
Validate knowledge cards. |
ensure_knowledge_source |
Ensure a knowledge source. |
upload_knowledge_documents |
Upload knowledge documents. Dangerous for a Full sync, or an Incremental one into a source something published answers from (or that can’t be ruled out) |
get_knowledge_sync |
Check a knowledge synchronization. |
ensure_knowledge_setting |
Ensure a knowledge configuration. Dangerous when it changes the language of one something published answers from (or that can’t be ruled out) |
build_ava_bot_flow |
Compose an AVA bot flow. |