# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Canvas LMS REST External Tools API version: 1.0.0 extends: openapi/canvas-external-tools-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-10-01' generator: build-phrasing.py label: Generated by API Evangelist operations: 19 - target: $.paths['/v1/courses/{course_id}/external_tools'].get update: x-apievangelist-phrasing: intent: List a course's external tools effect: read questions: - Which LTI tools are installed in a particular course? - Can I filter a course's external tools by placement or include ones inherited from the account? instructions: - text: List the external tools in course {course_id}. slots: course_id: path.course_id - text: Search course {course_id}'s external tools for {search_term}. slots: course_id: path.course_id search_term: query.search_term method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/external_tools'].post update: x-apievangelist-phrasing: intent: Install an external tool in a course effect: write questions: - How do I add an LTI tool to just one course? - Can I install a tool in a course from a config URL or XML? instructions: - text: Install external tool {name} in course {course_id} with consumer key {consumer_key}. slots: name: requestBody.name course_id: path.course_id consumer_key: requestBody.consumer_key - text: Add an LTI tool to course {course_id} from client ID {client_id}. slots: course_id: path.course_id client_id: requestBody.client_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/external_tools'].get update: x-apievangelist-phrasing: intent: List an account's external tools effect: read questions: - What LTI tools are configured at the account level? - Can I list only the selectable tools on an account? instructions: - text: List the external tools on account {account_id}. slots: account_id: path.account_id - text: Find account {account_id} tools with placement {placement}. slots: account_id: path.account_id placement: query.placement method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/external_tools'].post update: x-apievangelist-phrasing: intent: Install an external tool across an account effect: write questions: - How do I make an LTI tool available to every course under an account? - What privacy level and shared secret do I need to install an account-wide tool? instructions: - text: Install external tool {name} on account {account_id} with privacy level {privacy_level}. slots: name: requestBody.name account_id: path.account_id privacy_level: requestBody.privacy_level - text: Add an account-level LTI tool to {account_id} using config URL {config_url}. slots: account_id: path.account_id config_url: requestBody.config_url method: generated generated: '2026-10-01' - target: $.paths['/v1/groups/{group_id}/external_tools'].get update: x-apievangelist-phrasing: intent: List a group's external tools effect: read questions: - Which external tools can a student group use? - Can I list LTI tools available inside a group? instructions: - text: List the external tools for group {group_id}. slots: group_id: path.group_id - text: 'Show group {group_id}''s tools including parent contexts: {include_parents}.' slots: group_id: path.group_id include_parents: query.include_parents method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/external_tools/sessionless_launch'].get update: x-apievangelist-phrasing: intent: Get a sessionless launch link for a course tool effect: read questions: - How can I launch an LTI tool in a course without a browser session? - Can I get a direct launch URL for a tool tied to an assignment or module item? instructions: - text: Get a sessionless launch URL for tool {id} in course {course_id}. slots: id: query.id course_id: path.course_id - text: Generate a launch link in course {course_id} for assignment {assignment_id}. slots: course_id: path.course_id assignment_id: query.assignment_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/external_tools/sessionless_launch'].get update: x-apievangelist-phrasing: intent: Get a sessionless launch link for an account tool effect: read questions: - Can I get a session-free launch URL for a tool installed on an account? - Which launch types work for account-level sessionless launches? instructions: - text: Get a sessionless launch URL for tool {id} on account {account_id}. slots: id: query.id account_id: path.account_id - text: Create an account {account_id} launch link with launch type {launch_type}. slots: account_id: path.account_id launch_type: query.launch_type method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/external_tools/{external_tool_id}'].get update: x-apievangelist-phrasing: intent: Get one external tool in a course effect: read questions: - How do I see the settings of a specific tool installed in a course? - What placements does a given course tool have? instructions: - text: Show external tool {external_tool_id} in course {course_id}. slots: external_tool_id: path.external_tool_id course_id: path.course_id - text: Get course {course_id}'s tool {external_tool_id}. slots: course_id: path.course_id external_tool_id: path.external_tool_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/external_tools/{external_tool_id}'].put update: x-apievangelist-phrasing: intent: Update an external tool in a course effect: write questions: - Can I change the configuration of a tool installed in one course? - Will course-level edits to an LTI 1.3 tool get overridden later? instructions: - text: Update external tool {external_tool_id} in course {course_id}. slots: external_tool_id: path.external_tool_id course_id: path.course_id - text: Edit the settings of course {course_id}'s tool {external_tool_id}. slots: course_id: path.course_id external_tool_id: path.external_tool_id method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/external_tools/{external_tool_id}'].delete update: x-apievangelist-phrasing: intent: Remove an external tool from a course effect: destructive questions: - How do I uninstall an LTI tool from a single course? - Can I delete a course-level external tool? instructions: - text: Delete external tool {external_tool_id} from course {course_id}. slots: external_tool_id: path.external_tool_id course_id: path.course_id - text: Uninstall tool {external_tool_id} in course {course_id}. slots: external_tool_id: path.external_tool_id course_id: path.course_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/external_tools/{external_tool_id}'].get update: x-apievangelist-phrasing: intent: Get one external tool on an account effect: read questions: - How do I inspect an account-level LTI tool's configuration? - What does a specific account tool's record look like? instructions: - text: Show external tool {external_tool_id} on account {account_id}. slots: external_tool_id: path.external_tool_id account_id: path.account_id - text: Get account {account_id}'s tool {external_tool_id}. slots: account_id: path.account_id external_tool_id: path.external_tool_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/external_tools/{external_tool_id}'].put update: x-apievangelist-phrasing: intent: Update an external tool on an account effect: write questions: - Can I update an LTI tool that's installed for a whole account? - How do I change an account-level tool's settings? instructions: - text: Update external tool {external_tool_id} on account {account_id}. slots: external_tool_id: path.external_tool_id account_id: path.account_id - text: Edit account {account_id}'s tool {external_tool_id}. slots: account_id: path.account_id external_tool_id: path.external_tool_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/external_tools/{external_tool_id}'].delete update: x-apievangelist-phrasing: intent: Remove an external tool from an account effect: destructive questions: - How do I uninstall an account-wide LTI tool? - Can I delete a tool configured at the account level? instructions: - text: Delete external tool {external_tool_id} from account {account_id}. slots: external_tool_id: path.external_tool_id account_id: path.account_id - text: Uninstall account {account_id}'s tool {external_tool_id}. slots: account_id: path.account_id external_tool_id: path.external_tool_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/external_tools/rce_favorites/{id}'].post update: x-apievangelist-phrasing: intent: Favorite a tool in the rich content editor effect: write questions: - How do I pin an editor button tool as a favorite in the rich content editor? - Do RCE favorites set on an account apply to its subaccounts? instructions: - text: Mark tool {id} as an RCE favorite on account {account_id}. slots: id: path.id account_id: path.account_id - text: Make tool {id} a rich content editor favorite for account {account_id}. slots: id: path.id account_id: path.account_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/external_tools/rce_favorites/{id}'].delete update: x-apievangelist-phrasing: intent: Unfavorite a tool in the rich content editor effect: destructive questions: - Can I remove a tool from the editor's favorites without uninstalling it? - How do I take a tool off the RCE favorites list? instructions: - text: Unmark tool {id} as an RCE favorite on account {account_id}. slots: id: path.id account_id: path.account_id - text: Remove tool {id} from account {account_id}'s editor favorites. slots: id: path.id account_id: path.account_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/external_tools/top_nav_favorites/{id}'].post update: x-apievangelist-phrasing: intent: Add a tool button to top navigation effect: write questions: - How do I give a tool its own button in the top navigation bar? - What's the limit on top navigation favorites per account? instructions: - text: Add tool {id} to top navigation favorites on account {account_id}. slots: id: path.id account_id: path.account_id - text: Pin tool {id} to the top nav for account {account_id}. slots: id: path.id account_id: path.account_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/external_tools/top_nav_favorites/{id}'].delete update: x-apievangelist-phrasing: intent: Remove a tool button from top navigation effect: destructive questions: - Can I take a tool's dedicated button out of the top navigation? - How do I free up a top navigation favorite slot? instructions: - text: Remove tool {id} from top navigation favorites on account {account_id}. slots: id: path.id account_id: path.account_id - text: Unpin tool {id} from account {account_id}'s top nav. slots: id: path.id account_id: path.account_id method: generated generated: '2026-10-01' - target: $.paths['/v1/external_tools/visible_course_nav_tools'].get update: x-apievangelist-phrasing: intent: List visible course nav tools across courses effect: read questions: - Which tools show up in the course navigation menu for several courses at once? - Can I check visible course navigation tools for a set of context codes? instructions: - text: List visible course navigation tools for contexts {context_codes}. slots: context_codes: query.context_codes - text: Show the course nav tools I can see across {context_codes}. slots: context_codes: query.context_codes method: generated generated: '2026-10-01' - target: $.paths['/v1/courses/{course_id}/external_tools/visible_course_nav_tools'].get update: x-apievangelist-phrasing: intent: List visible course nav tools in one course effect: read questions: - What tools appear in one course's left-hand navigation for me? - Which non-hidden course navigation tools apply in a single course? instructions: - text: List visible course navigation tools in course {course_id}. slots: course_id: path.course_id - text: Show the navigation menu tools shown in course {course_id}. slots: course_id: path.course_id method: generated generated: '2026-10-01'