Supported tools
Review Mindtickle MCP tool parameters, response fields, scopes, limits, and side effects.
Use this reference to look up each tool’s required scope, parameters, returned fields, and behavior. Each tool is listed under its group with its identifier and required scope.
The server returns only tools permitted by the access token’s scopes through tools/list, and checks access on every tools/call. For authentication, token handling, and error codes, see Build a custom client.
Server endpoint
Section titled “Server endpoint”The Mindtickle MCP server is hosted on each Mindtickle instance. Use the following URL pattern:
https://MINDTICKLE_INSTANCE_URL/mcpReplace MINDTICKLE_INSTANCE_URL with the hostname of your Mindtickle instance (for example, example.mindtickle.com). Use only the hostname; do not include the protocol or any other path. The /mcp path is fixed and must not be modified.
Transport: The server supports MCP over HTTP. The protocol uses GET requests for streaming and POST requests for JSON-RPC communication. Authentication is required on every request; see Build a custom client for the authentication model, scopes, and token endpoint.
Read-only tools
Section titled “Read-only tools”The list tools (find_deals, find_companies, find_contacts, and find_rooms) return up to 10 results per page by default. Use each tool’s documented limit and offset parameters to retrieve more results. mindtickle_search has separate result and pagination behavior described below. find_call uses result_count instead of limit, defaults to 20, and has no offset parameter.
Search content mindtickle_search read:search
mindtickle_search
Section titled “mindtickle_search”Searches across Mindtickle learning content (including assets, modules, files, series, asset hubs, tags, and peers) using hybrid keyword and AI-powered semantic search. Results respect the user’s existing content access permissions. The content library includes training modules, sales assets, battle cards, and playbooks.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Required | 1 to 512 characters. Can’t contain --, /*, */, or ; (blocked to prevent SQL-injection-style patterns). |
limit |
integer | Optional | Minimum 1; maximum 100; default 15. Results per call. |
fetchPeers |
boolean | Optional | Default true. Include matching peer (colleague) profiles. |
fetchSeries |
boolean | Optional | Default true. Include matching training series. |
fetchModules |
boolean | Optional | Default true. Include matching training modules. |
fetchFiles |
boolean | Optional | Default false. Include matching files. |
fetchAssets |
boolean | Optional | Default false. Include matching assets. Set this to true to get the asset id needed for create_room or edit_room. |
fetchHubs |
boolean | Optional | Default false. Include matching asset hubs. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
items |
array | Up to limit items; an empty array on no matches. Each item includes a relevance score, matched excerpts in matchingText, and a metaDetails object whose fields depend on the result’s content type and which fetch* flags were set. |
totalCount |
integer | Total number of matches, not just the ones included in this response. |
returnedCount |
integer | Number of items actually included in this response. |
hasNextPage |
boolean | Whether more results exist beyond this response. |
endCursor |
string | A pagination cursor. See the note below. |
entityWiseCount |
array | Optional. Match count broken down by entity type. |
Example prompts
Section titled “Example prompts”- “Find the latest battle card for our top competitor.”
- “Search my Mindtickle content for the onboarding module.”
Ask Seller Copilot mindtickle_seller_copilot_ask read:copilot_chat
mindtickle_seller_copilot_ask
Section titled “mindtickle_seller_copilot_ask”Sends a conversation to Mindtickle’s Seller Copilot and returns the assistant’s response. Draws context from the calling user’s own assigned training, sales assets, and Call AI recordings. Requires the client to maintain and send the full conversation history with each request. Supports optional streaming responses; see Streaming responses.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
input |
string or array | Required | Either a single question as a string, or the full conversation so far as an array of {role, content} turns (role is user or assistant; content can’t be empty). If you pass an array, its last turn’s role must be user. |
Each call starts a new session. To continue a conversation, resend the full prior exchange in input with your new question as the final user turn. A previous response’s sessionId cannot resume the session.
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
queryId |
string | Server-assigned ID for this query. |
sessionId |
string | Session identifier assigned to this exchange for logging and correlation. It cannot be passed back as a request parameter. |
fullText |
string | The assembled answer text. |
status |
string | COMPLETED, IN_PROGRESS, or FAILED. |
error |
object | Present when the service reports an error in a returned tool response. Includes code and message. |
Example prompts
Section titled “Example prompts”- “How do I improve my close rate on enterprise deals?”
- “Summarize my last call with Example Organization.”
Find deals find_deals read:rooms
find_deals
Section titled “find_deals”Looks up deals (CRM opportunities) by name, company, or stage. Useful for finding the deal behind a Digital Sales Room, or for confirming whether a room already exists for one. Results are scoped to the calling user’s organization. Every parameter is optional. An unfiltered call matches every deal in the organization, so filter whenever possible.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Optional | Partial match against the deal name. |
company_ids |
string[] | Optional | Restricts results to one or more companies. |
stage |
string[] | Optional | Restricts results to one or more deal stages. Exact match. |
with_room |
boolean | Optional | true returns only deals that already have a room; false returns only deals without one; omit to return all deals. A deal whose only room is a draft counts as having no room, so check the room IDs in the result before you create a new room. |
limit |
integer | Optional | Minimum 1; maximum 1,000, enforced by the server; default 10. Results per page. |
offset |
integer | Optional | Minimum 0. Number of matches to skip for pagination. |
include_total_count |
boolean | Optional | Default false. Adds total_count to the response, but only on the first page (when offset is omitted). Counting every match across a large pipeline can be slow, so pass this only when a count is actually needed. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
total_count |
integer | Present only when include_total_count: true was passed, and only on the first page. Absence never means zero. |
deals |
array | Up to limit items; an empty array on no matches (a normal success response, not an error). Each item includes deal_id, name, stage, amount, currency, close_date, next_step, crm_deal_id, deal_guide_id (nullable; pass unchanged to fetch_deal_guide; null means no guide has been generated for that deal), company_id, company.name, owner.full_name, room_id (UUID, nullable), and room_id_int (nullable). |
Example prompts
Section titled “Example prompts”- “Pull up the Example Organization deal.”
- “Show me all deals in the Negotiation stage for Example Organization.”
- “Which of my deals don’t have a room yet?”
Find companies find_companies read:rooms
find_companies
Section titled “find_companies”Looks up companies (CRM accounts) by name, so you can attach one to a Digital Sales Room for company-level branding and analytics. Matching is partial and case-insensitive. Results are scoped to the calling user’s organization.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Optional | Part or all of the company name. Matching is partial and case-insensitive: a plain substring match, not exact and not embedding-based. Omit or pass an empty string to match every company. |
limit |
integer | Optional | Minimum 1; default 10. The documented maximum is 1,000. The tool’s schema does not enforce this maximum; keep requests within the documented limit. |
offset |
integer | Optional | Minimum 0; zero-based. Number of matches to skip for pagination. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
total_count |
integer | Total matches. Present on the first page only. |
companies |
array | Up to limit items; an empty array on no matches. Each item includes company_id, name, and crm_company_id. |
Example prompts
Section titled “Example prompts”- “Do we have an account for Example Organization?”
- “Find any companies with ‘example’ in the name.”
Find contacts find_contacts read:rooms
find_contacts
Section titled “find_contacts”Looks up buyer and prospect contacts by name, email, or associated company, so you can add them to a Digital Sales Room’s guest list or invite them with share_room. Contacts are synced from your CRM, so a very recent change may not appear immediately.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Optional | Whole-word match. Text containing @ is treated as an email prefix. |
email |
string (email format) | Optional | Exact, complete email address. |
company_id |
string | Optional | Restricts results to one company’s contacts. |
limit |
integer | Optional | Minimum 1; maximum 1,000, enforced by the server; default 10. |
offset |
integer | Optional | Minimum 0. Number of matches to skip for pagination. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
total_count |
integer | Total matches. Present on the first page only. |
contacts |
array | Up to limit items; an empty array on no matches. Each item includes contact_id, first_name, last_name, email, title, consent (boolean or null), company_id, crm_contact_id, and company.company_name. |
Example prompts
Section titled “Example prompts”- “Who’s my main contact at Example Organization?”
- “Find quinn@example.com in our contacts.”
Find rooms find_rooms read:rooms
find_rooms
Section titled “find_rooms”Finds existing Digital Sales Rooms by name, or by the deal, company, or contact linked to them, and returns each room’s identifiers for use with fetch_room, edit_room, and share_room. By default, returns only active rooms, most recently active first. Results include any room the calling user is permitted to see, which for a manager or admin can include rooms created by others.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Optional | Free text matched against the room name, and the linked deal, company, or contact name or email. |
room_type |
array of enum: deal, general, content_link, company |
Optional | Defaults to all four types. |
status |
array of enum: ACTIVE, INACTIVE, DRAFT |
Optional | Defaults to [ACTIVE]. Case-sensitive. |
sort_by |
enum: lastActivityAt, updatedAt, name, ownerName, visitorsCount |
Optional | Defaults to lastActivityAt, always sorted descending. |
limit |
integer | Optional | Minimum 1; maximum 1,000, enforced by the server; default 10. |
offset |
integer | Optional | Minimum 0. Number of matches to skip for pagination. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
total_count |
integer | Total matches. Present on the first page only. |
rooms |
array | Up to limit items; an empty array on no matches. Each item includes room_id (UUID), room_id_int (numeric, as a string), name, status, room_type, owner_name, visitors_count, visits_count, last_activity_at, link, and nullable deal (deal_id, deal_name) and company (company_id, company_name) objects. |
Example prompts
Section titled “Example prompts”- “Is there already a room set up for the Example Organization deal?”
- “Show me the rooms I’ve shared in the last month.”
Get room details fetch_room read:rooms
fetch_room
Section titled “fetch_room”Retrieves the full details of a single Digital Sales Room by its ID, including its configuration and links and, when requested, its content and guest lists. Use this to confirm a room’s current state or verify that a create_room or edit_room change took effect.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
room_id |
string (UUID) | Required | Must match a 36-character UUID pattern. The numeric room_id_int is rejected. Use the UUID returned by find_rooms, find_deals, or create_room. |
include_content |
boolean | Optional | Default false. Adds a contents array to the response. |
include_guests |
boolean | Optional | Default false. Adds a guests array to the response. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
room |
object or null | When non-null, includes room_id, room_id_int, name, status, room_type, audience, layout, description, language, invited_contacts_only, requires_email, requires_passcode (boolean only, the passcode itself is never returned), requires_expiration_date, expires_at (nullable), domain_restricted, domains (only for a caller who can edit the room; null otherwise), enable_qa, enable_contact_card, enable_share, buyer_copilot_enabled, owner, nullable deal and company, nullable primary_guest, visitors_count, visits_count, room_contacts_count, conversation_threads_count, total_items, link, internal_link, expired, last_activity_at, created_at, updated_at. |
contents |
array | Present only if include_content: true was passed. Each item includes content_id, name, content_type, uuid, and description. |
guests |
array | Present only if include_guests: true was passed. Each item includes contact_id, first_name, last_name, and email. |
Example prompts
Section titled “Example prompts”- “What’s in the room I shared with Example Organization last month?”
- “Who has access to this room right now?”
Get a Deal Guide fetch_deal_guide read:deals:deal
fetch_deal_guide
Section titled “fetch_deal_guide”Returns the pre-generated Deal Guide for one deal: pains, objections with the seller’s response, the buying committee, competitor intel, and recommended next steps. Use it for pre-call prep, or whenever the user asks how a specific deal is going. This tool never generates a guide; it only returns one that already exists.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
deal_guide_id |
string | Required | The guide’s ID, taken unchanged from the deal_guide_id field of find_deals. Not the deal ID and not the CRM opportunity ID; passing either returns not_found. |
include_deal_overview |
boolean | Optional | Default true. Pains, desired outcomes, risks, budget, objections with the seller’s response, value alignment, and what is and isn’t working. |
include_company_insights |
boolean | Optional | Default true. The prospect company: overview, key facts, executives, products, priorities, market position, SWOT, financials, competitors, and customers. |
include_stakeholders |
boolean | Optional | Default true. The buying committee, with influence, dos and don’ts, conversation starters, pains, and desired outcomes per person. |
include_competition |
boolean | Optional | Default true. Named competitors with strengths, weaknesses, how to win, objections, and trap-setting questions. |
include_next_best_actions |
boolean | Optional | Default true. Recommended next steps with reasoning, urgency, and due dates. |
include_whats_new |
boolean | Optional | Default true. What has changed on the deal recently, as a summary plus itemized changes. This is the fastest way to answer “what’s happened since I last looked.” |
include_methodology_coverage |
boolean | Optional | Default false. Sales-methodology coverage (MEDDIC/BANT-style). Only populated where a methodology is configured; an empty list means “not in use here,” not “nothing covered.” |
include_activity_timeline |
boolean | Optional | Default false. Recent calls, emails, room visits, and asset views. Costs a second backend call, and returns the most recent items only. There’s no date filter, so filter on occurred_at yourself for a specific window. |
timeline_type |
enum: ASSET, ROOM, CALL, EMAIL |
Optional | Restricts the activity timeline to one activity type. Ignored unless include_activity_timeline is true. |
timeline_limit |
integer | Optional | Minimum 1; maximum 50; default 20. Ignored unless include_activity_timeline is true. |
include_sources |
boolean | Optional | Default false. Attaches provenance (which call, CRM record, web page, or vendor) to every insight. Roughly doubles the response, so turn it on only when a claim needs attributing rather than asserting. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
deal_guide_id, deal_id |
string | The guide’s own ID, echoed back, and the deal it belongs to. |
not_found |
boolean | true when the deal has no guide. A final answer, not a reason to retry; this tool never generates a guide. |
processing_status |
string | UNSPECIFIED, IN_PROGRESS, COMPLETED, or FAILED. IN_PROGRESS means a guide is being built right now; report that rather than presenting empty sections as fact. |
is_closed, last_updated_at |
boolean, string | Whether the deal is closed, and when the guide was last regenerated. Read is_closed alongside deal_overview.outcome_story, which is populated only post-close. |
room_id |
string | The linked Digital Sales Room, if any. Pass to fetch_room for the room’s current state. |
deal |
object | CRM opportunity summary: name, stage, amount, close_date, company_name, industry, market_segment, status, crm_url. |
deal_overview |
object | Present only when include_deal_overview is true. Includes summary, pains, outcomes, current_tools, risks, budget, competitive_landscape, key_milestones, decision_timeline, whats_working, whats_not_working, buyer_triggers, objections (each with the seller’s response), value_alignment, and outcome_story (populated post-close only). |
company_insights |
object | Present only when include_company_insights is true. Includes overview, key_facts, key_executives, products, priorities, market_position, swot, financials, direct_competitors, customer_landscape, recent_developments, trigger_events. |
stakeholders |
array | Present only when include_stakeholders is true. Each entry: name, email, influence (free text, not a fixed high/medium/low), location, title, career_snapshot, current_responsibilities, engagement_history, pains, desired_outcomes, dos, donts, conversation_starters, last_interaction, tags. |
competition |
array | Present only when include_competition is true. Each entry: name, summary, competing_products, strengths, weaknesses, how_to_win, objections, trap_questions. |
whats_new |
object | Present only when include_whats_new is true. summary plus itemized items. |
methodology_coverage |
array | Present only when include_methodology_coverage is true. Each entry: element (for example, Metrics or Economic Buyer), status, notes. Empty means no methodology is configured. |
next_best_actions |
object | Present only when include_next_best_actions is true. priority_focus_areas plus actions, each with action, guidance, type, urgency, due_date, is_completed. |
activity_timeline |
object | Present only when include_activity_timeline is true. items (most recent first), each with type, occurred_at, and type-specific detail. A call carries call_id (pass to fetch_call for the transcript) and participants; a room visit or asset view carries room_id or interaction_id and a visitor. page_info.has_next_page reports whether more items exist beyond timeline_limit. |
Example prompts
Section titled “Example prompts”- “How is the Example Organization deal going?”
- “What’s changed on the Example Organization deal since last week?”
- “Who should I talk to at Example Organization, and what should I avoid saying?”
Find calls find_call read:calls
find_call
Section titled “find_call”Searches the user’s recorded sales calls and meetings, the conversations captured and transcribed by Call AI, by who was on them, the account or opportunity they’re tied to, when they happened, or what was discussed. Returns a ranked list of calls the user is permitted to see, each with a summary, so you can confirm a call is the right one before fetching its full details with fetch_call.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
search_text |
string | Optional | The conceptual query: what was discussed (for example, “renewal pricing”). Never a company, account, product, or opportunity name; those belong in opportunity_name. |
opportunity_name |
string | Optional | The account, company, or opportunity named in the request, as a literal phrase (for example, “Example Organization”). Matched against the call’s account and opportunity fields. |
participant_names |
string[] | Optional | People who should have been on the call, by name. Matched against each call’s participants. |
result_count |
integer | Optional | Minimum 1; maximum 50; default 20. May return fewer; never more. |
sort_criteria |
enum: RECENT, RELEVANCE |
Optional | Defaults to RELEVANCE. RECENT sorts newest first. |
filter_by_user_participation |
boolean | Optional | Restricts to calls the current user was on. Unset by default. |
from_date, to_date |
string (RFC 3339 date-time) | Optional | Inclusive absolute bounds on the recording date, for a named or explicit range. Mutually exclusive with relative_time_value and relative_time_unit; setting both is rejected. |
relative_time_value, relative_time_unit |
integer, enum (DAY, WEEK, MONTH, YEAR) |
Optional | A relative window (for example, 30 and DAY for “the last 30 days”). Mutually exclusive with from_date and to_date. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
recordings |
array | Ranked list of matching calls, most relevant (or most recent, with sort_criteria: RECENT) first; empty when nothing matched. Each item includes id (pass to fetch_call), title, source_url, url, date, participants (name, email per person), crm_context (account_name, opportunity_name, deal_id), duration_sec, summary, and relevance_score (0 to 1, normalized so the top result is 1.0). |
total_candidates |
integer | How many calls the engine considered before the result_count cap was applied. |
Example prompts
Section titled “Example prompts”- “Find my last call with Example Organization.”
- “Show me calls about renewal pricing from the last 30 days.”
- “What calls did I have with Quinn N. last quarter?”
Get call details fetch_call read:calls
fetch_call
Section titled “fetch_call”Retrieves detailed information for one or more recorded calls by ID: the transcript, key moments, action items, or summary. Call IDs typically come from find_call.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
callIds |
string[] (stringified integers) | Required | Typically the id values returned by find_call, or a call ID a user tagged directly. When you already have IDs, pass them all in a single call rather than calling this tool once per ID. |
properties |
array of enum: TRANSCRIPT, KEY_MOMENTS, ACTION_ITEMS, SUMMARY |
Required | At least one property is required; there’s no default. See the note below for which to request. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
callDetails |
array | One entry per requested call: callId, propertyDetails (an array of {property, value} pairs, one per requested property), and truncated (whether a property’s value was cut short). |
Example prompts
Section titled “Example prompts”- “Summarize my last call with Example Organization.” (chained from
find_call) - “What were the action items from yesterday’s Example Organization call?”
- “Did Example Organization mention our top competitor on that call, and what did they say?”
Get your training progress fetch_learner_insights no scope
fetch_learner_insights
Section titled “fetch_learner_insights”Returns the calling learner’s own training progress: overall progress, assigned series, assigned modules, completed modules, and, if requested, certification detail. This tool requires no scope; it is available whatever scopes the token carries. It never writes anything.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
include_profile |
boolean | Optional | Whether to return the learner’s name, email address, avatar, and profile link. Default: true. |
include_overall_progress |
boolean | Optional | Whether to return overall progress: module counts by status and percent complete, for assigned, required, and all accessible modules. Default: true. |
include_assigned_series |
boolean | Optional | Whether to return the series assigned to the learner, newest first. Default: true. |
include_assigned_modules |
boolean | Optional | Whether to return the modules assigned to the learner, newest first. Default: true. |
include_completed_modules |
boolean | Optional | Whether to return the modules the learner has completed, including assigned and self-enrolled modules. This is the same list as the Completed tab on the learner’s My Profile page. Default: true. |
include_certification_detail |
boolean | Optional | Whether to return the certifications awarded in each series, with the award date, a download link, and a verification link. This adds one extra lookup for each series, so turn it on only when the learner asks to see or share a certificate. Default: false. |
series_status |
array of enum: NOT_STARTED, IN_PROGRESS, COMPLETED |
Optional | Return only series in these statuses. COMPLETED means every module is done, NOT_STARTED means no module is started, and IN_PROGRESS is anything in between. Omit for all series. Filtering is done on the server, so total stays correct. Ignored unless include_assigned_series is true. |
module_status |
array of enum: NOT_STARTED, IN_PROGRESS, COMPLETED |
Optional | Return only assigned modules in these statuses. Omit for all assigned modules. Ignored unless include_assigned_modules is true. It does not filter completed modules. |
series_limit |
integer | Optional | Maximum number of series to return, from 1 to 50. Default: 25. |
series_offset |
integer | Optional | Number of series to skip. Pass the next_offset value from the previous page. Default: 0. |
assigned_modules_limit |
integer | Optional | Maximum number of assigned modules to return, from 1 to 50. Default: 20. |
assigned_modules_offset |
integer | Optional | Number of assigned modules to skip. Pass the next_offset value from the previous page. Default: 0. |
modules_limit |
integer | Optional | Maximum number of completed modules to return, from 1 to 50. Default: 20. |
modules_offset |
integer | Optional | Number of completed modules to skip. Pass the next_offset value from the previous page. Default: 0. |
modules_sort |
enum: DESC, ASC |
Optional | Order of completed modules by completion time: DESC (most recent first) or ASC (oldest first). Default: DESC. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
company.overall_progress_default_view |
string | ASSIGNED, REQUIRED, or ACCESSIBLE. The overall progress view to show first. It is the view the learner’s My Profile page shows. Present only when include_overall_progress is true. |
user.learner |
object | The calling learner. Contains id, and, when include_profile is true, name, email, avatar_url (profile picture), and profile_url (link to the learner’s My Profile page). |
user.learner.stats.overall_progress |
object | Three views: assigned, required, and accessible. Each is a list of {user_state, num_modules} entries, with a matching assigned_percent_complete, required_percent_complete, or accessible_percent_complete value. |
user.learner.assigned_series |
object | A page of assigned series: total, has_more, next_offset, and data. Each entry in data has status, series (id, name, localized_name, link), total_modules, completed_modules, in_progress_modules, not_started_modules, percent_complete, score (user_score and max_score), and certifications (awarded_count and total_certifications). awarded_certifications appears only when include_certification_detail is true. |
user.learner.assigned_modules |
object | A page of assigned modules: total, has_more, next_offset, and data. Each module has the fields in the next row, plus assigned_on, relevance, and url. |
user.learner.completed_modules |
object | A page of completed modules, ordered by completion time, in the same shape. Each module has progress_status, state, started_on, completed_on, due_date (value and the action taken on expiry), user_score, module (id, name, type, total_score, description, and the series it belongs to), percent_complete, completion_status (PASS or FAIL for assessments and missions), certificate_url, certificate_achieved, badge_name, and badge_url. |
badge_name, badge_url |
string | The name and image of the badge (medal) a module awards. Returned for courses, quick updates, and reinforcements. |
Example prompts
Section titled “Example prompts”- “What’s my learning progress?”
- “What do I still need to finish?”
- “Which of my series have I completed?”
- “Do I have any certificates I can share?”
- “Which badges have I earned?”
- “What did I finish first?”
Get Manager Insights fetch_manager_team_insights read:manager
fetch_manager_team_insights
Section titled “fetch_manager_team_insights”Manager Insights returns a snapshot of how the calling manager’s team is doing, covering readiness, training, coaching, and conversations. It can also return a drill-down into one series, module, learner, or training category. The tool only reads data. It never sends anything.
This tool requires the read:manager scope. The user must also have the manager role in Mindtickle. A token that carries the scope doesn’t give a user without the manager role access to this tool.
Snapshot parameters
Section titled “Snapshot parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
include_readiness_index |
boolean | Optional | Whether to return the readiness_index section. Default: true. |
include_training |
boolean | Optional | Whether to return the training section. Default: true. |
include_coaching |
boolean | Optional | Whether to return the coaching section. Default: true. |
include_conversations |
boolean | Optional | Whether to return the conversations section. Default: true. |
readiness_period_days |
integer | Optional | How many days back to the Readiness Index cadence that current scores are compared against. Minimum 1. Default: 30. It doesn’t change how often Readiness Index is calculated. |
coaching_period_days |
integer | Optional | Days of coaching activity to count, ending today. Minimum 1. Default: 30. |
top_bottom_size |
integer | Optional | How many top and how many bottom Readiness Index learners and competencies to return, from 1 to 10. Default: 5. |
calls_period_days |
integer | Optional | Days of past team calls to count and to search for calls to review, ending today. Minimum 1. Default: 30. |
upcoming_calls_days |
integer | Optional | Days ahead to list the team’s scheduled calls. Minimum 1. Default: 7. |
calls_limit |
integer | Optional | Maximum number of calls to return in each of calls_to_review and upcoming_calls, from 1 to 25. Default: 5. |
Drill-down parameters
Section titled “Drill-down parameters”Pass object_type to get one detailed view instead of the snapshot. Every snapshot section is then empty and the answer is in drilldown.
| Parameter | Type | Required | Description |
|---|---|---|---|
object_type |
enum: series, module, learner, training |
Optional | Which drill-down to return. Leave it empty for the snapshot. |
object_id |
string | Optional | The ID to drill into. For series: a series ID, or empty to list the team’s series. For module: a module ID. For learner: a learner’s user ID. For training: one of priority, required, or overdue. |
status_filter |
enum: behind, completed, all |
Optional | Which learners a list returns: those who are behind (not completed), those who completed, or all. Default: behind. |
limit |
integer | Optional | Page size for drill-down lists, from 1 to 100. Default: 25. |
offset |
integer | Optional | Number of rows to skip, from 0 to 900. A larger value is refused. Use page.has_more to decide whether to ask for the next page. Default: 0. |
Drill-downs
Section titled “Drill-downs”object_type |
object_id |
What it returns |
|---|---|---|
series |
Empty | The team’s series with completion, least complete first. Use this to find a series ID from a series name. |
series |
A series ID | The team’s learners in that series, most behind first. |
module |
A module ID | The team’s learners on that module, most behind first. |
learner |
A learner’s user ID | Returns that learner’s series, missions, coaching, and up to 25 modules, with overdue modules first. |
training |
priority, required, or overdue |
The learners who are behind on that training category. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
as_of |
string | ISO 8601 UTC timestamp of the read. Always set, so an empty result is never mistaken for a failed call. |
manager_user_id |
string | The user ID of the manager the result was built for. |
warnings |
array of string | Why a section is empty or partial, in the form <section>_<reason>. The section is readiness_index, training, coaching, conversations, or drilldown. The reason is no_data (nothing to report), not_enabled (the feature is off for the company), or unavailable (the read failed). drilldown_emails_unavailable means learner emails couldn’t be read and only IDs are returned. drilldown_truncated means more rows exist than a drill-down can return. |
readiness_index |
object | Readiness Index: enabled, as_of_cadence_date, compared_to_period_days, average_score (current, prior, delta), and the highest and lowest learners and competencies. Each ranked entry has id, name, score, delta, group (top, bottom, or all), and url. Each block has a scope field of direct_reports or hierarchy. |
training |
object | A snapshot for the manager’s direct reports: as_of, scope, and categories for priority, required, and overdue. Each category has target_pct, learners_above_target, learners_below_target, and team_average_pct. |
coaching |
object | The manager’s own coaching activity: period_days, scope (always manager), mission_reviews, and coaching_sessions. Mission reviews and coaching sessions assigned to the manager, as {completed, total, url} counts. |
conversations |
object | Team calls: period_days, scope, total_calls, delta_calls, calls_to_review_total, calls_to_review, upcoming_calls_days, upcoming_calls, and url. Each call has recording_id, title, participants, and start_time. |
drilldown |
object | Set only when object_type is passed. Contains object_type, object_id, as_of, scope, the series or module being viewed, and one of learners, series_list, or learner, plus page (limit, offset, total_count, has_more). |
Example prompts
Section titled “Example prompts”- “How is my team doing?”
- “Who is overdue on training?”
- “Which of my series is my team furthest behind on?”
- “Who on my team hasn’t finished the onboarding series?”
- “Which of my team’s calls should I review?”
Find tutorials find_tutorial read:training:ai_tutor
find_tutorial
Section titled “find_tutorial”Lists the calling learner’s AI Tutor tutorials, with the learner’s progress in each.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
search |
string | Optional | Text to search for in tutorial names. |
progress_status |
array of string | Optional | Filter by progress status. Only the first value is used. |
access_type |
array of enum: DIRECT, GROUP, PUBLIC |
Optional | Filter by how the learner got access to the tutorial. Only the first value is used. |
has_updates |
boolean | Optional | Whether to return only tutorials that have updates. |
sort_by |
enum: ASSIGNED_AT, NAME, LAST_ACTIVITY_AT |
Optional | What to sort by. Default: ASSIGNED_AT. |
sort_direction |
enum: DESC, ASC |
Optional | Sort direction. Default: DESC. |
limit |
integer | Optional | Maximum number of tutorials to return. Minimum 1. Default: 10. |
cursor |
string | Optional | The page_info.end_cursor value from the previous page, to get the next page. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
tutorials.total_count |
integer | The number of tutorials on the current page, not the learner’s total number of tutorials. |
tutorials.page_info |
object | has_next_page and end_cursor. Pass end_cursor as cursor to get the next page. |
tutorials.tutorials[].node |
object | One tutorial: tutorial_id, name, description, thumbnail, url, progress_status, progress_summary, completion_percentage, chapter_count, estimated_time_remaining, estimated_total_minutes, access_type, assigned_at, last_activity_at, and has_updates. |
Example prompts
Section titled “Example prompts”- “What tutorials do I have?”
- “Find my tutorial on objection handling.”
Open a tutorial fetch_tutorial read:training:ai_tutor
fetch_tutorial
Section titled “fetch_tutorial”Opens one AI Tutor tutorial in an interactive screen inside the AI client (an MCP app). This tool is in beta and works only for companies that have AI Tutor turned on.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
tutorialId |
string | Required | The tutorial’s ID: 6 to 25 digits, which also appears in the tutorial’s URL. The tutorial’s title isn’t accepted. Use the tutorial_id returned by find_tutorial. |
Response
Section titled “Response”This tool returns no content. It opens the AI Tutor screen. A successful call means only that the screen opened.
Example prompts
Section titled “Example prompts”- “Open my tutorial on objection handling.” (chained from
find_tutorial)
Write tools
Section titled “Write tools”These tools create or change data. share_room sends invitation emails and can also create contact records. create_room, edit_room, and create_contacts do not send emails. Review the tool’s requirements and response fields before acting on its result.
Create a room create_room write:rooms
create_room
Section titled “create_room”Creates a new Digital Sales Room and returns its identifiers and links. The room goes live immediately, but no one is emailed until share_room is called. This tool creates a room without a template. If you need a templated room, create one from a room template in the Mindtickle web app instead.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string, 1 to 250 characters | Required | Room title. |
room_type |
enum: deal, general, content_link, company |
Required | general creates a standalone room with no CRM linkage. |
asset_ids |
string[], min 1 item | Required | At least one asset is required. A room can’t be created empty. |
deal_id |
string | Conditionally required | Required only when room_type is deal. |
passcode |
string, min 1 character | Conditionally required | Required only when requires_passcode is true. |
expires_at |
integer (epoch seconds), min 1 | Conditionally required | Required only when requires_expiration_date is true. |
company_id |
string | Optional | Not specified. |
contact_ids |
string[], min 1 item if provided | Optional | Adds guests at creation. No one is emailed as a result. |
description |
string | Optional | Not specified. |
invited_contacts_only |
boolean | Optional | Default true. |
requires_email |
boolean | Optional | Default false. |
requires_passcode |
boolean | Optional | Default false. |
requires_expiration_date |
boolean | Optional | Default false. |
domains |
string[] | Optional | Each entry must start with @. |
enable_qa |
boolean | Optional | Default true. |
enable_contact_card |
boolean | Optional | Default true. |
enable_share |
boolean | Optional | Accepted by the tool, but not currently passed through to the room-creation call. Setting it has no confirmed effect. |
buyer_copilot_enabled |
boolean | Optional | Default true; also controlled by an organization-level setting. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
errors |
string[] | A non-empty array means the room was not created, even though the call returned. |
message |
string | Human-readable message accompanying errors. |
room |
object, present only on success | room_id, room_id_int, name, status (always ACTIVE on creation), room_type, link, internal_link, created_at, total_items. |
Example prompts
Section titled “Example prompts”- “Set up a new room for Example Organization with the latest pricing deck and case study.”
- “Create a general room I can use for the security questionnaire.”
Update a room edit_room write:rooms
edit_room
Section titled “edit_room”Updates an existing Digital Sales Room: its name, description, linked deal or company, guest list, access controls, feature settings, and content. Only the fields you pass are changed, and a field you do pass replaces its current value entirely. Content can be added, but not removed or reordered, through this tool. No one is emailed as a result of these changes; use share_room to notify guests.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
room_id_int |
string matching ^[0-9]+$ |
Required | The numeric room ID (not the UUID room_id). |
name |
string, 1 to 250 characters | Optional | Not specified. |
description |
string | Optional | Not specified. |
deal_id |
string | Optional | Not specified. |
company_id |
string | Optional | Not specified. |
contact_ids |
string[], min 1 item if provided | Optional | Replaces the entire guest list: omitted contacts are removed, not left alone. |
invited_contacts_only |
boolean | Optional | Not specified. |
requires_email |
boolean | Optional | Not specified. |
requires_passcode |
boolean | Optional | Not specified. |
passcode |
string | Conditionally required | Required when requires_passcode is true. |
requires_expiration_date |
boolean | Optional | Not specified. |
expires_at |
integer (epoch seconds) | Conditionally required | Required when requires_expiration_date is true. |
domains |
string[] | Optional | Replaces the entire allowed-domains list, the same way contact_ids does. |
enable_qa |
boolean | Optional | Not specified. |
enable_contact_card |
boolean | Optional | Not specified. |
enable_share |
boolean | Optional | Not specified. |
buyer_copilot_enabled |
boolean | Optional | Not specified. |
add_assets |
boolean | Optional | Not specified. |
assets_to_add |
array of objects (id, name) |
Conditionally required | Required when add_assets is true. Content can only be added through this tool, never removed or reordered. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
updateRoom.errors |
string[] | Can contain errors even when the tool call completes. Check this array to determine whether the update succeeded. |
updateRoom.message |
string | Status message. |
updateRoom.room |
object | Includes these 7 room fields: room_id, room_id_int, name, status, link, internal_link, total_items. |
addAssetsToRooms.all_contents_already_exists |
boolean | Present only when add_assets: true was passed. true means the asset was already in the room. Nothing new was added. |
addAssetsToRooms.selected_resource_not_found |
boolean | Present only when add_assets: true was passed. true means nothing was added. |
Example prompts
Section titled “Example prompts”- “Add the new pricing sheet to the room I shared with Example Organization.”
- “Add Kiran P.’s manager to the Example Organization room as a guest.”
Share a room share_room write:rooms
share_room
Section titled “share_room”Emails an existing Digital Sales Room’s link to one or more buyers by email address, inviting them to open it. This is the only tool that sends email on a room’s behalf. create_room and edit_room never notify anyone.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
room_id_int |
string matching ^[0-9]+$ |
Required | The numeric room ID (not the UUID room_id). |
invitees |
array of objects, min 1, max 50 | Required | Each entry needs only an email field (email format, min 3 characters). There is no contact_ids parameter. The schema is strict, so passing one is rejected outright. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
link |
string | The buyer-facing room link, the same one included in the invitation email. |
contacts |
array | The people actually invited and emailed. Each entry includes contact_id, email, first_name, last_name. |
errors |
string[] | Can be present even when the rest of the payload is non-null. |
message |
string | Human-readable message accompanying errors. |
Example prompts
Section titled “Example prompts”- “Send the Example Organization room to quinn@example.com and their manager.”
- “Invite sasha@example.com to the room I just created.”
Create contacts create_contacts write:rooms
create_contacts
Section titled “create_contacts”Finds or creates contacts from 1 to 50 email addresses for use in a Digital Sales Room’s guest list. Returns existing contacts without creating duplicates and creates records for new addresses. It does not send email or associate contacts with a company or deal. Use find_contacts to look up a person by name.
Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
emails |
string[], min 1, max 50 | Required | Email addresses to resolve into contacts, one per person. Addresses are trimmed, lowercased, and deduplicated by the server before resolution. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
errors |
string[] | Batch-level errors. The tool can return these alongside other result data. |
message |
string | Human-readable message accompanying errors. |
results |
array | One entry per submitted email: email, created (boolean: true if a new contact was inserted, false if an existing one was reused), error (nullable, per-address failure reason), and a nested contact object (contact_id, first_name, last_name, email, company_id) that is null when that item’s error is set. |
Example prompts
Section titled “Example prompts”- “Add sasha@example.com and kiran@example.com as contacts so I can invite them to a room.”
- “Create a contact for izumi@example.com.”
Timeouts
Section titled “Timeouts”Each tool call is subject to a timeout. If the underlying operation doesn’t complete within that time, the call fails with a timeout error.
| Tool(s) | Timeout |
|---|---|
find_deals, find_companies, find_contacts, find_rooms, fetch_room |
8 seconds |
create_room, edit_room |
15 seconds |
share_room, create_contacts |
10 seconds |
mindtickle_seller_copilot_ask |
90 seconds |
mindtickle_search |
30 seconds |
fetch_deal_guide |
15 seconds |
find_call, fetch_call |
5 seconds |
fetch_learner_insights |
15 seconds |
fetch_manager_team_insights |
15 seconds |
find_tutorial |
8 seconds |
Existing tools retain their names and required scopes as new tools are added. Check the scopes granted to your connection when discovering available tools.