{"serverId":"mcp-registry/io.github.laxis-tech/laxis-mcp","tools":[{"name":"get_meeting","fixed":{"name":"get_meeting","description":"Get one meeting's details: title, date, participants, keywords, and summary.\n\n    Does NOT include the transcript text — use get_transcript for that, or\n    search_meetings to find the relevant part of a long meeting. If the meeting is\n    plan-restricted, returns {accessible: false, needs_upgrade: true, reason,\n    upgrade_url}; tell the user it needs a Laxis plan upgrade and share upgrade_url\n    so they can upgrade, rather than treating it as an error.\n    ","inputSchema":{"type":"object","title":"get_meetingArguments","required":["meeting_id"],"properties":{"meeting_id":{"type":"string","title":"Meeting Id"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":185,"tokensAfter":185},{"name":"get_transcript","fixed":{"name":"get_transcript","description":"Read a meeting's transcript as '[m:ss] Speaker: text' lines, paginated.\n\n    Returns at most max_chars characters starting at offset; if next_offset is\n    not null, call again with offset=next_offset for the next page. Use this\n    only when you need to read the actual conversation — for locating a topic\n    inside meetings, search_meetings is much cheaper. If the meeting is\n    plan-restricted, returns {accessible: false, needs_upgrade: true, reason,\n    upgrade_url, transcript: null}; tell th","inputSchema":{"type":"object","title":"get_transcriptArguments","required":["meeting_id"],"properties":{"offset":{"type":"integer","title":"Offset","default":0},"max_chars":{"type":"integer","title":"Max Chars","default":16000},"meeting_id":{"type":"string","title":"Meeting Id"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":232,"tokensAfter":232},{"name":"list_meetings","fixed":{"name":"list_meetings","description":"List the user's meetings, newest first (id, title, date, duration, short summary).\n\n    Call this when the user asks about their meetings (\"what meetings did I have\n    last week?\") or when you need a meeting_id for get_meeting / get_transcript\n    and don't have one. For content questions (\"what did we say about pricing?\"),\n    prefer search_meetings.\n    ","inputSchema":{"type":"object","title":"list_meetingsArguments","properties":{"page":{"type":"integer","title":"Page","default":1},"page_size":{"type":"integer","title":"Page Size","default":10}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":169,"tokensAfter":169},{"name":"search_meetings","fixed":{"name":"search_meetings","description":"Semantic search across the user's meeting transcripts; returns matching snippets.\n\n    This is the first tool to reach for on content questions (\"what did we\n    decide about pricing?\", \"上次和客户聊了什么\"). Each snippet carries its\n    meeting_id and timestamp metadata, so you can cite sources and follow up\n    with get_meeting / get_transcript. Optionally restrict to one meeting\n    (meeting_id) or a date range (from_date/to_date, YYYY-MM-DD). Answer from\n    the returned snippets; if they are insuffi","inputSchema":{"type":"object","title":"search_meetingsArguments","required":["query"],"properties":{"k":{"type":"integer","title":"K","default":10},"query":{"type":"string","title":"Query"},"to_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date","default":null},"from_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date","default":null},"meeting_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meeting Id","default":null}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":285,"tokensAfter":285}],"toolsChanged":4,"tokensSaved":0,"todo":[{"tool":"get_meeting","params":["meeting_id"]},{"tool":"get_transcript","params":["offset","max_chars","meeting_id"]},{"tool":"list_meetings","params":["page","page_size"]},{"tool":"search_meetings","params":["k","query","to_date","from_date","meeting_id"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}