tml_ask_expert
ChatGPTAsk the expert a question. Synchronous — may take 5–30 seconds. Returns the assembled answer and durationMs.
tml_assign_documents_to_expert
ChatGPTLink one or more documents to an expert so it can use them for answers. Idempotent — re-linking an already-linked document is a no-op.
tml_assign_roles_to_course
ChatGPTAssign one or more roles to a course. Additive — already-assigned roles skipped.
tml_assign_roles_to_expert
ChatGPTAssign roles to an expert. Additive.
tml_assign_user_to_role
ChatGPTAssign a user to a role within a department. Idempotent.
tml_create_app_training
ChatGPTCreate an application training backed by an already-uploaded video file. Convenience alias for tml_create_demo_training with trainingType=APPLICATION_TRAINING — use this when you specifically want to create an Application Training (vs a Demo Training).
tml_create_course
ChatGPTCreate an empty course shell with the given name. Use other tools to add structure (modules, topics) and AI-generated content (V1.1).
tml_create_demo_training
ChatGPTCreate a demo training backed by an already-uploaded video file. trainingType must be DEMO_TRAINING or APPLICATION_TRAINING.
tml_create_department
ChatGPTCreate a new department with the given name and optional description.
tml_create_department_role
ChatGPTCreate a role within a department. Returns the updated department with the new role.
tml_create_ile_text_exercise
ChatGPTAdd an Interactive Learning Exercise (ILE_TEXT) — a text-based practice exercise built around a sales scenario, answered by typing rather than voice or video. With topicId it lands in that course topic; without it, on the company Exercises page.
tml_create_learning_byte
ChatGPTAdd a learning byte (lesson grouping) to a topic.
tml_create_lesson
ChatGPTAdd a lesson to a learning byte.
tml_create_lesson_question
ChatGPTAdd an in-lesson question. type is one of MULTIPLE_CHOICE (requires options), OPEN_ENDED (optional expectedAnswer), FILL_IN_THE_BLANKS (requires fillInTheBlanks payload) or MATCH_THE_BLOCKS (requires matchTheBlocks payload).
tml_create_module
ChatGPTAdd a module to a course.
tml_create_module_quiz_question
ChatGPTAdd a quiz question to a module. type is one of MULTIPLE_CHOICE (requires options), OPEN_ENDED (optional expectedAnswer), FILL_IN_THE_BLANKS (requires fillInTheBlanks payload) or MATCH_THE_BLOCKS (requires matchTheBlocks payload).
tml_create_rpe_video_exercise
ChatGPTAdd an RPE_VIDEO exercise (video-based role-play). With topicId it lands in that course topic; without it, on the company Exercises page.
tml_create_rpe_voice_exercise
ChatGPTAdd an RPE_VOICE exercise (voice-based role-play). With topicId it lands in that course topic; without it, on the company Exercises page.
tml_create_topic
ChatGPTAdd a topic to a module.
tml_create_topic_quiz_question
ChatGPTAdd a quiz question to a topic. type is one of MULTIPLE_CHOICE (requires options), OPEN_ENDED (optional expectedAnswer), FILL_IN_THE_BLANKS (requires fillInTheBlanks payload) or MATCH_THE_BLOCKS (requires matchTheBlocks payload).
tml_create_user
ChatGPTCreate a new user in the company and trigger the magic-link invitation email. Provide email (required), firstName/lastName (recommended), isAdmin flag, and optional department-role assignments.
tml_deactivate_user
ChatGPTDeactivate a user. Idempotent — returns the user even if already deactivated.
tml_delete_course
ChatGPTSoft-delete a course. Idempotent.
tml_delete_demo_training
ChatGPTSoft-delete a demo training. Idempotent.
tml_delete_department
ChatGPTSoft-delete a department (cascades to roles and role assignments). Idempotent.
tml_delete_document
ChatGPTSoft-delete a document. Idempotent — returns success even if the document is already deleted or does not exist in the caller's company.
tml_delete_exercise
ChatGPTSoft-delete an exercise. Idempotent.
tml_delete_learning_byte
ChatGPTSoft-delete a learning byte. Idempotent.
tml_delete_lesson
ChatGPTSoft-delete a lesson. Idempotent.
tml_delete_lesson_question
ChatGPTDelete one in-lesson question. Idempotent.
tml_delete_media
ChatGPTSoft-delete a media item. Idempotent.
tml_delete_module
ChatGPTSoft-delete a module. Idempotent.
tml_delete_module_intro
ChatGPTRemove a module's intro. Idempotent.
tml_delete_module_quiz_question
ChatGPTDelete a module quiz question. Idempotent.
tml_delete_topic
ChatGPTSoft-delete a topic. Idempotent.
tml_delete_topic_intro
ChatGPTRemove a topic's intro. Idempotent.
tml_delete_topic_quiz_question
ChatGPTDelete a topic quiz question. Idempotent.
tml_duplicate_company_exercise
ChatGPTCopy a company exercise, returning the new one.
tml_generate_course
ChatGPTCreate a full course with AI-generated content from a structured plan. Creates the course shell, every module, every topic, and enqueues AI content generation for every topic. Generation runs asynchronously (typically 5-10 minutes). Returns courseId and generationRequestId — poll tml_get_course_generation_status with the courseId until all requests are completed before considering the course ready.
tml_generate_course_content
ChatGPTTrigger AI content generation for specified topics inside an existing course. Use this when the course shell + structure already exist and you want lessons/questions/exercises generated for a subset of topics. Generation runs asynchronously — poll tml_get_course_generation_status.
tml_get_certificate
ChatGPTFetch a single certificate's details by id. 404 if not in caller's company.
tml_get_company_insights
ChatGPTCompany-level KPIs — totalStudents, averageProgressPercent, activeThisWeekCount, completedCount, completionRatePercent.
tml_get_course
ChatGPTFetch a single course with module + topic structure.
tml_get_course_generation_status
ChatGPTGet the current status of all in-flight AI generation requests for a course. Returns activeRequests with id, status (PENDING / IN_PROGRESS / COMPLETED / FAILED), progress counts, target type, and error string if any. Use to poll progress after tml_generate_course, tml_generate_course_content, or tml_regenerate_item.
tml_get_course_version_snapshot
ChatGPTGet the full snapshot of a specific course version (modules/topics/lessons/exercises/questions tree).
tml_get_demo_training
ChatGPTGet demo-training detail (includes segments + assigned roles).
tml_get_document
ChatGPTFetch detail for a single document by id. Returns metadata plus a download URL.
tml_get_exercise
ChatGPTGet exercise detail.
tml_get_expert
ChatGPTFetch a single expert detail along with linked documents.
tml_get_learning_byte
ChatGPTGet learning-byte detail with nested lessons.
tml_get_lesson
ChatGPTGet lesson detail (content + media + questions).
tml_get_lesson_question
ChatGPTGet one in-lesson question detail.
tml_get_media
ChatGPTFetch detail for a single media item. Returns metadata plus a download URL.
tml_get_module
ChatGPTGet module detail (including topics).
tml_get_module_intro
ChatGPTGet a module's intro text. 404 if none set.
tml_get_module_quiz_question
ChatGPTGet one module quiz question.
tml_get_student_events
ChatGPTPaginated stream of activity events for a single student (lessons completed, courses started, exercises completed, etc.).
tml_get_student_insights
ChatGPTPer-student aggregated insights for a time window. Returns hoursSpent breakdown by day and course plus per-enrollment progress.
tml_get_topic
ChatGPTGet topic detail.
tml_get_topic_intro
ChatGPTGet a topic's intro text. 404 if none set.
tml_get_topic_knowledge_base
ChatGPTReturn the aggregated knowledge base for a topic — content, aiContent, manual-edit flag, source-document merge state, and verification warnings.
tml_get_topic_quiz_question
ChatGPTGet one topic quiz question.
tml_get_user
ChatGPTFetch detail for a single user (team member).
tml_link_demo_training_segment_resources
ChatGPTAttach already-uploaded documents or media to a segment. Pass position to insert at a given zero-based index instead of appending. The Full Run row shows every segment's resources and cannot hold its own.
tml_link_documents_to_topic
ChatGPTLink one or more documents to a topic. Additive (already-linked are skipped).
tml_link_media_to_lesson
ChatGPTLink one or more media-library assets to a lesson. Additive (already-linked are skipped).
tml_list_avatar_presets
ChatGPTThe personas a role play exercise can use. Pass a name as avatarName when creating one. Left empty, one of these is assigned automatically.
tml_list_certificates_for_student
ChatGPTList certificates earned by a student inside the caller's company. Returns metadata (course name, serial, completion + issued dates, pdfFileId).
tml_list_course_knowledge_bases
ChatGPTReturn the knowledge base for every topic in the course.
tml_list_course_modules
ChatGPTList modules in a course (ordered by ordinalNumber).
tml_list_course_versions
ChatGPTList published versions of a course.
tml_list_courses
ChatGPTList courses in the caller's company. Paginated. Filter by search text or by assigned department-role ids.
tml_list_demo_trainings
ChatGPTList demo / application training videos in the caller's company.
tml_list_departments
ChatGPTList all departments in the caller's company. No pagination — set is small. Each department includes its roles.
tml_list_documents
ChatGPTList documents in the caller's company. Use when the user asks about uploaded files, knowledge-base contents, or wants to search documents. Returns a paginated list of document metadata (no file contents).
tml_list_exercise_scenarios
ChatGPTThe values accepted by salesPhase and scenarioKey. Phase keys go into salesPhase, scenario keys into scenarioKey.
tml_list_experts
ChatGPTList AI experts in the caller's company. Paginated. Use search to filter by name.
tml_list_learning_bytes
ChatGPTList learning bytes (groupings of lessons) inside a topic.
tml_list_lesson_questions
ChatGPTList in-lesson questions for a lesson.
tml_list_lessons_in_learning_byte
ChatGPTList lessons inside a learning byte.
tml_list_media
ChatGPTList media items (images, videos, audio) in the caller's company. Paginated. Use search to narrow by name.
tml_list_module_quiz_questions
ChatGPTList quiz questions attached to a module.
tml_list_module_topics
ChatGPTList topics in a module (ordered by ordinalNumber).
tml_list_topic_exercises
ChatGPTList exercises (ILE_TEXT / RPE_VOICE / RPE_VIDEO). With topicId, the exercises in that course topic. Without it, the company exercises from the Exercises page.
tml_list_topic_linked_documents
ChatGPTList documents linked to a topic. Paginated, optional name search.
tml_list_topic_quiz_questions
ChatGPTList quiz questions attached to a topic.
tml_list_users
ChatGPTList users (team members) in the caller's company. Paginated. Filter by name/email via search, or by department/role assignments.
tml_move_topic
ChatGPTMove a topic to another module (and optional ordinalNumber).
tml_publish_course
ChatGPTPublish a course (make it available to students). Fails if the course has no publishable content (modules + lessons).
tml_put_module_intro
ChatGPTSet or replace a module's intro text (upsert).
tml_put_topic_intro
ChatGPTSet or replace a topic's intro text (upsert).
tml_reactivate_user
ChatGPTReactivate a previously deactivated user. Idempotent.
tml_regenerate_company_exercise
ChatGPTStart generation for a company exercise. generationStatus moves to PENDING.
tml_regenerate_item
ChatGPTRegenerate a single AI-generated item (lesson, lesson questions, quiz, intro, or exercise). Useful when the existing content needs a refresh but the rest of the topic/module is fine. parentType is required when target is INTRO or QUIZ (specifies whether the parent is a MODULE or a TOPIC); not needed for LESSON / LESSON_QUESTIONS / EXERCISE.
tml_regenerate_topic_knowledge_base
ChatGPTEnqueue an AI regeneration of the topic knowledge base from its current source documents. Returns the request id and initial status (PENDING / IN_PROGRESS / COMPLETED / FAILED). Poll tml_get_topic_knowledge_base to observe requestStatus.
tml_remove_all_roles_from_course
ChatGPTRemove all role assignments from a course. Idempotent.
tml_remove_all_roles_from_expert
ChatGPTRemove all role assignments from an expert. Idempotent.
tml_remove_role_from_course
ChatGPTRemove one role assignment from a course. Idempotent.
tml_remove_role_from_expert
ChatGPTRemove one role assignment from an expert. Idempotent.
tml_reorder_lesson_media
ChatGPTSet the display order of a lesson's media assets. fileIds must cover every asset currently linked to the lesson exactly once; order drives gallery playback.
tml_reorder_lesson_questions
ChatGPTReorder in-lesson questions.
tml_reorder_module_quiz_questions
ChatGPTReorder module quiz questions.
tml_reorder_modules
ChatGPTReorder modules in a course. moduleIds must include all active modules.
tml_reorder_topic_quiz_questions
ChatGPTReorder topic quiz questions.
tml_reorder_topics
ChatGPTReorder topics in a module.
tml_reprocess_demo_training
ChatGPTRe-run AI processing on the video (optional new processingPrompt).
tml_set_demo_training_availability
ChatGPTToggle student access (true = available, false = hidden).
tml_set_exercise_active
ChatGPTMake a company exercise available to learners, or hide it. Idempotent.
tml_set_exercise_roles
ChatGPTReplace the department roles a company exercise is assigned to. An empty list clears it.
tml_unassign_document_from_expert
ChatGPTUnlink a single document from an expert. Idempotent.
tml_unassign_user_from_role
ChatGPTUnassign a user from a role. Idempotent.
tml_unlink_demo_training_segment_resources
ChatGPTDetach documents or media from a segment. Idempotent.
tml_unlink_document_from_topic
ChatGPTUnlink one document from a topic. Idempotent.
tml_unlink_media_from_lesson
ChatGPTUnlink one media asset from a lesson. Idempotent. Leaves the asset untouched in every other lesson and its media-library status unchanged.
tml_update_course
ChatGPTUpdate a course's name. Partial update — omitted fields preserved.
tml_update_demo_training
ChatGPTPartial update of demo-training metadata.
tml_update_demo_training_segment
ChatGPTPartial update of one segment's content and timing. Only the properties you send are changed; sending description, transcript or notes as null clears them. Required Visuals can never be left empty, and Key Talking Points can never be left empty on a Demo Training. Links must be http(s) — a bare host is promoted to https://. Times are MM:SS and must stay inside the video and in order; a neighbour only moves when the new range would overlap it. The Full Run row cannot be edited.
tml_update_department
ChatGPTUpdate department name and/or description. Partial update.
tml_update_document
ChatGPTUpdate document metadata (name and/or description). Partial update — omitted fields are preserved.
tml_update_exercise
ChatGPTType-aware update — ILE_TEXT uses prompt + generatedContent.scenario; RPE_* uses all RPE fields. Omitted fields preserve current values.
tml_update_learning_byte
ChatGPTPartial update of name/description.
tml_update_lesson
ChatGPTReplace lesson content.
tml_update_lesson_question
ChatGPTUpdate an in-lesson question. Fields are type-aware — provide options for MULTIPLE_CHOICE, expectedAnswer for OPEN_ENDED, fillInTheBlanks for FILL_IN_THE_BLANKS, matchTheBlocks for MATCH_THE_BLOCKS; unrelated fields are ignored.
tml_update_media
ChatGPTUpdate media item metadata (name and/or description). Partial update.
tml_update_module
ChatGPTPartial update — name and/or description. Omitted fields preserved.
tml_update_module_quiz_question
ChatGPTUpdate a module quiz question. Fields are type-aware — provide options for MULTIPLE_CHOICE, expectedAnswer for OPEN_ENDED, fillInTheBlanks for FILL_IN_THE_BLANKS, matchTheBlocks for MATCH_THE_BLOCKS; unrelated fields are ignored.
tml_update_module_quiz_settings
ChatGPTSet the count of one questionType for a module's quiz. Other types' counts preserved.
tml_update_topic
ChatGPTPartial update — name and/or description. Omitted fields preserved.
tml_update_topic_knowledge_base
ChatGPTReplace the topic knowledge base content with a manually-edited version. Sets isManuallyEdited=true and returns the updated knowledge base.
tml_update_topic_quiz_question
ChatGPTUpdate a topic quiz question. Fields are type-aware — provide options for MULTIPLE_CHOICE, expectedAnswer for OPEN_ENDED, fillInTheBlanks for FILL_IN_THE_BLANKS, matchTheBlocks for MATCH_THE_BLOCKS; unrelated fields are ignored.
tml_update_topic_quiz_settings
ChatGPTSet the count of one questionType for a topic's quiz. Other types' counts preserved.
tml_update_user
ChatGPTUpdate an existing user's first/last name, admin flag, and/or department-role assignments. Partial update — omitted fields are preserved. Email is not editable.
tml_ask_expert
Claudetml_assign_documents_to_expert
Claudetml_assign_roles_to_course
Claudetml_assign_roles_to_expert
Claudetml_assign_user_to_role
Claudetml_create_app_training
Claudetml_create_course
Claudetml_create_demo_training
Claudetml_create_department
Claudetml_create_department_role
Claudetml_create_ile_text_exercise
Claudetml_create_learning_byte
Claudetml_create_lesson
Claudetml_create_lesson_question
Claudetml_create_module
Claudetml_create_module_quiz_question
Claudetml_create_rpe_video_exercise
Claudetml_create_rpe_voice_exercise
Claudetml_create_topic
Claudetml_create_topic_quiz_question
Claudetml_create_user
Claudetml_deactivate_user
Claudetml_delete_course
Claudetml_delete_demo_training
Claudetml_delete_department
Claudetml_delete_document
Claudetml_delete_exercise
Claudetml_delete_learning_byte
Claudetml_delete_lesson
Claudetml_delete_lesson_question
Claudetml_delete_media
Claudetml_delete_module
Claudetml_delete_module_intro
Claudetml_delete_module_quiz_question
Claudetml_delete_topic
Claudetml_delete_topic_intro
Claudetml_delete_topic_quiz_question
Claudetml_generate_course
Claudetml_generate_course_content
Claudetml_get_certificate
Claudetml_get_company_insights
Claudetml_get_course
Claudetml_get_course_generation_status
Claudetml_get_course_version_snapshot
Claudetml_get_demo_training
Claudetml_get_document
Claudetml_get_exercise
Claudetml_get_expert
Claudetml_get_learning_byte
Claudetml_get_lesson
Claudetml_get_lesson_question
Claudetml_get_media
Claudetml_get_module
Claudetml_get_module_intro
Claudetml_get_module_quiz_question
Claudetml_get_student_events
Claudetml_get_student_insights
Claudetml_get_topic
Claudetml_get_topic_intro
Claudetml_get_topic_quiz_question
Claudetml_get_user
Claudetml_link_documents_to_topic
Claudetml_link_media_to_lesson
Claudetml_list_certificates_for_student
Claudetml_list_course_modules
Claudetml_list_course_versions
Claudetml_list_courses
Claudetml_list_demo_trainings
Claudetml_list_departments
Claudetml_list_documents
Claudetml_list_experts
Claudetml_list_learning_bytes
Claudetml_list_lesson_questions
Claudetml_list_lessons_in_learning_byte
Claudetml_list_media
Claudetml_list_module_quiz_questions
Claudetml_list_module_topics
Claudetml_list_topic_exercises
Claudetml_list_topic_linked_documents
Claudetml_list_topic_quiz_questions
Claudetml_list_users
Claudetml_move_topic
Claudetml_publish_course
Claudetml_put_module_intro
Claudetml_put_topic_intro
Claudetml_reactivate_user
Claudetml_regenerate_item
Claudetml_remove_all_roles_from_course
Claudetml_remove_all_roles_from_expert
Claudetml_remove_role_from_course
Claudetml_remove_role_from_expert
Claudetml_reorder_lesson_media
Claudetml_reorder_lesson_questions
Claudetml_reorder_module_quiz_questions
Claudetml_reorder_modules
Claudetml_reorder_topic_quiz_questions
Claudetml_reorder_topics
Claudetml_reprocess_demo_training
Claudetml_set_demo_training_availability
Claudetml_unassign_document_from_expert
Claudetml_unassign_user_from_role
Claudetml_unlink_document_from_topic
Claudetml_unlink_media_from_lesson
Claudetml_update_course
Claudetml_update_demo_training
Claudetml_update_department
Claudetml_update_document
Claudetml_update_exercise
Claudetml_update_learning_byte
Claudetml_update_lesson
Claudetml_update_lesson_question
Claudetml_update_media
Claudetml_update_module
Claudetml_update_module_quiz_question
Claudetml_update_module_quiz_settings
Claudetml_update_topic
Claudetml_update_topic_quiz_question
Claudetml_update_topic_quiz_settings
Claudetml_update_user
Claude