add_time_entry
ChatGPTLog a finished block of time after the fact, without touching the running timer. Use it when the user reports work they already did ("log 2h of design for Acme yesterday").
create_client
ChatGPTCreate a new client. Only the name is required — contact and billing fields can be filled in now or later with update_client.
create_document
ChatGPTCreate a document inside a project — a plain doc, or an estimate, proposal or agreement. For estimate, proposal and agreement, prefer creating it WITHOUT content: the server seeds a full template already filled in from the user's own profile and the project's client record, leaving [bracketed] placeholders wherever it had no data. Then call get_document, replace those placeholders, and send the finished markdown back with update_document. Pass content yourself only for a plain doc, or when the user has given you the exact text they want. Show the returned url to the user — it opens the new document in Loopsii.
create_project
ChatGPTCreate a new project from a name. Use it when the user starts new work; set the client, stage, dates and price afterwards with update_project.
create_task
ChatGPTCreate a task. Only the title is required — file it under a project, set the priority, status, due date or milestone in the same call, or leave them at their defaults (todo, medium, no project). Use it whenever the user asks for something to be added to their list. When the task follows up on a meeting, pass meeting: the task is then linked to that meeting and takes its project.
fetch
ChatGPTFetch one record by id — the document, meeting, task, project, client or recording that search returned. Use it to read the full content behind a search hit; pass the optional type when you know it to skip the lookup.
get_client
ChatGPTRead one client in full — contact fields, billing address, VAT and notes. Use it before quoting a client detail back to the user or before updating one.
get_document
ChatGPTRead one document in full, including its whole body as markdown. Use it before answering questions about what a document says, and always before update_document — an update replaces the entire body, so you need the current text to edit. Estimate tables come back as ```estimate fenced JSON and callouts as "> [!NOTE]" blockquotes; both are real content, so keep them verbatim.
get_meeting
ChatGPTRead one meeting: metadata, the projects it is filed under (projects — the primary first), the AI summary and the tasks generated from it. Use it to answer "what did we decide in X". Only set include_transcript when the summary is not enough — transcripts are huge and come back 30000 characters at a time: while transcriptNextOffset is not null, call again with transcript_offset set to it to read on.
get_profile
ChatGPTRead the signed-in user's own account settings: name, workspace slug, timezone, currency, hourly rate, and the business identity printed on their documents (business name, address, VAT and registration numbers). Use it when you need the user's currency or rate for a calculation, or their business identity for a document. Bank details are never returned.
get_project
ChatGPTRead one project in full — stage, client, start date, deadline, price, hourly rate and description. A null hourlyRate means the project bills at the default rate from get_profile. Use it before answering questions about a specific project or before updating it.
get_recording
ChatGPTRead one screen recording: metadata, its summary and transcript, plus the public watch URL when sharing is on. Use it to answer questions about what a recording shows. The transcript comes back 30000 characters at a time: while transcriptNextOffset is not null, call again with transcript_offset set to it to read on.
get_task
ChatGPTRead one task in full — description, status, priority, project, milestone, due date, where it came from and its comments, newest first. Use it before quoting a task detail back to the user or before updating one. The task can be a UUID, an id prefix, or any part of its title.
list_clients
ChatGPTList every client with contact and billing details; archived clients are included and marked isArchived. Use it to answer "who are my clients", or to find the client id a project or invoice question needs.
list_documents
ChatGPTList the documents in the workspace, newest first — id, title, kind, project and when each was last touched. Use it to see what the user has written, or to find the document another document tool needs. Filter by project and by kind: a plain doc, or an estimate, proposal or agreement.
list_meetings
ChatGPTList recent meetings, newest first — id, title, platform, date and duration. Use it to find the meeting the user means before calling get_meeting.
list_people
ChatGPTList the people the user has met with, from meeting attendance — name, email, how many meetings and the most recent one. Use it to answer "who have I been meeting" or to check when someone last came up.
list_projects
ChatGPTList projects with their id, name, slug and whether each is archived. Archived projects are left out unless include_archived is true — set it when the user asks about old, finished or archived work. Use it to see what the user is working on, or to get the id a project tool needs.
list_recordings
ChatGPTList recent screen recordings, newest first — id, title, date, duration, processing status and views. Use it to find the recording the user means before calling get_recording.
list_tasks
ChatGPTList tasks, newest first — id, title, status, priority, project, parent task and due date. Use it to answer "what is on my list" or "what is left on the Acme project", and to find the task another task tool needs. Filter by project (a name, an id, or "none" for tasks filed under no project), by parent task (its subtasks, or "none" for top-level tasks only) and by status.
list_time_entries
ChatGPTList logged time entries over a date window with their durations, descriptions and projects. Use it to answer "how much did I work on X" or to summarise a day, week or month.
search
ChatGPTSearch the whole Loopsii workspace at once — projects, clients, tasks, documents, invoices and meetings. Use this first whenever the user names something ("the Acme brief", "that invoice") and you do not already know its id; it returns titles, subtitles and absolute app URLs. Narrow it with type, project, client or since when the user scopes the question ("meetings about pricing in the Acme project since June"); with a filter set the query may be left out.
timer_start
ChatGPTStart the time tracking timer, optionally against a project. Any timer already running is stopped and logged first. Use it when the user says they are starting work on something.
timer_status
ChatGPTCheck whether a time tracking timer is running right now, and for how long. Use it before starting or stopping a timer, and whenever the user asks what they are working on.
timer_stop
ChatGPTStop the running timer and log the entry, reporting how long it ran. Use it when the user says they are done with what they were tracking.
update_client
ChatGPTChange contact or billing fields on an existing client, or archive and restore it — archiving a client archives its projects with it. Pass only what changes; null clears a field. Use it when the user gives you a new address, VAT number or billing email.
update_document
ChatGPTRename a document or rewrite its body. The content you pass REPLACES the entire document — call get_document first, edit the markdown it hands back, and send the whole result, or everything you left out is deleted. Keep ```estimate fences and "> [!NOTE]" callouts exactly as they came unless the user actually wants them changed. Pass only what changes. Show the returned url to the user — it opens the document in Loopsii.
update_meeting
ChatGPTRename a meeting or file it under a project. Pass only what changes. Use it when the user says which project a call belonged to, or wants a clearer title than the generated one.
update_profile
ChatGPTChange the signed-in user's own settings — display name, timezone, currency, hourly rate, and the business identity that appears on their documents (business name, address, VAT and registration numbers). Pass only what changes; null clears a nullable field. Email, workspace slug, avatar and bank details cannot be changed here.
update_project
ChatGPTChange fields on an existing project — rename it, move its stage, assign a client, set dates, the estimated price or its own hourly rate, archive or restore it. Pass only what changes; null clears a nullable field. Renaming regenerates the slug.
update_recording
ChatGPTRename a screen recording or file it under a project. Pass only what changes. Use it when the user says which project a recording belongs to, or wants a clearer title.
update_task
ChatGPTChange fields on an existing task — rename it, move its status or priority, refile it under another project or milestone, set or clear the due date. Completing a task IS an update: pass status "done". Pass only what changes; null clears a nullable field.
update_time_entry
ChatGPTChange the project or description of a logged time entry — for example file an entry that was tracked with no project. Take the entry id from list_time_entries. Pass only what changes.
add_time_entry
Claudeask_meeting
Claudecreate_client
Claudecreate_document
Claudecreate_project
Claudecreate_task
Claudefetch
Claudeget_client
Claudeget_document
Claudeget_meeting
Claudeget_profile
Claudeget_project
Claudeget_recording
Claudeget_task
Claudelist_clients
Claudelist_documents
Claudelist_meetings
Claudelist_people
Claudelist_projects
Claudelist_recordings
Claudelist_tasks
Claudelist_time_entries
Claudesearch
Claudetimer_start
Claudetimer_status
Claudetimer_stop
Claudeupdate_client
Claudeupdate_document
Claudeupdate_profile
Claudeupdate_project
Claudeupdate_task
Claude