attach_file_to_task
ChatGPTAttaches uploaded files to a task the user can access; they then appear among the task's files on the website and in get_task. The files are ones uploaded through an upload link of this connection (create_upload_link → get_uploaded_files) and must have finished uploading. Returns the task's new file ids (a file already attached somewhere else is attached as a copy, with its own id). Nobody is notified.
create_client
ChatGPTAdds a client (or a lead) to the company's CRM, as the website's new-client form does, and returns the saved card with the company's client statuses. Without status_id the card gets the default active client status; a status whose kind is lead makes it a lead. When an email is given, Contreal creates a login for that email (or uses the existing account with it) and links it to the client's projects; no invitation or email is sent, and nobody is notified. Search first (search_clients) to avoid a duplicate card. Available to owners, managers and full team members.
create_meeting_from_recording
ChatGPTTurns an uploaded recording of a meeting that already took place into a Contreal meeting and starts its transcription, as the website's "upload a recording" form does. The recording is an audio or video file (mp3, m4a, wav, ogg, webm, aac, flac, mp4, mov) uploaded through an upload link of this connection (create_upload_link → get_uploaded_files), fully uploaded. The meeting is created with the given title and date (default now), optionally for a project the user is a member of and/or any active client of the company (the client need not be the project's client); a meeting in a project also appears as a step of that project. No calendar event is created and nobody is invited. Transcription is paid with the company's credits exactly as on the website; when the company has no credits left, nothing is created and the answer says so. It runs in the background and usually takes a few minutes; the meeting is processing until then. When it finishes, the meeting gets a transcript, a summary, key points and suggested tasks (saved inactive, on the meeting), and this user is told by WhatsApp or else email that the transcript is ready. get_meeting shows the status; get_meeting_transcript reads the result.
create_project
ChatGPTCreates a project for a client, as the website's new-project form does, and returns it. Types: fixed (one price), hourly (price per hour), hourly_bank (a bank of hours at a price per hour), retainer (a recurring price, optionally with hours). The project starts in progress. You become its manager; every full team member of the company is added to it; when the client has a Contreal login (a client email), that login is added to the project as its client. Nobody is notified and nothing is sent to the client. Tasks are added afterwards (create_task). Available to owners, managers and full team members.
create_task
ChatGPTCreates a task as this user, the same way the website's new-task form does, and returns it (task_id, fields, assignee_ids). A task may belong to a project (optionally to one of its steps) and to any active client of the company, which need not be the project's client. The user must be a member of the project, and the step must belong to that project; otherwise the task is not created. Status and priority ids are the company's own (list_statuses_and_priorities lists them); when omitted the task gets the company's default open status and default priority. Assignment: without assignee_ids the task is assigned to this user, as on the website; with assignee_ids exactly those users are assigned. Only internal team members can be assigned: active members of the task's project, or, for a task without a project, active full members of the company; through this connection a user whose role is client cannot be assigned. When any requested assignee cannot be assigned, the task is not created. Every newly assigned user other than you who has task notifications turned on is notified: in-app, plus email and/or WhatsApp for the channels they turned on. A user who turned task notifications off gets nothing, not even in-app. Nobody else is notified; nothing is sent to clients.
create_upload_link
ChatGPTOpens an upload link: the way files reach Contreal, for attaching to a task (attach_file_to_task) or for transcribing a meeting recording (create_meeting_from_recording). Tools take a file only by its Contreal file_id, and a file gets one by being uploaded through such a link. The link belongs to this connection, works for 30 minutes without signing in, and takes up to 25 files of up to 2 GiB each. The answer always has upload_id and upload_page_url. Two ways to upload: (1) A person in a browser opens upload_page_url — a page in Hebrew or English where they pick or drag one or more files, see each file's progress, and end on a screen listing the uploaded files with their file ids. (2) Whoever can run commands on the computer that holds the files passes files (name, content_type, exact size_bytes of each): every file comes back with a file_id, a signed put_url valid for 10 minutes and required_headers; one HTTP PUT of the exact bytes with exactly those headers stores it, e.g. curl -X PUT --data-binary @contract.pdf -H "Content-Type: application/pdf" -H "x-goog-content-length-range: 48213,48213" -H "x-goog-if-generation-match: 0" "<put_url>". A PUT with another size or content type is refused; a URL that expired is replaced by calling this tool again. Either way, get_uploaded_files with the upload_id lists the link's files and whether each has arrived (uploaded) or not yet (pending). Uploaded files stay in the company's storage even if nothing uses them. Nobody is notified.
get_active_timer
ChatGPTReturns the timer the connected user has running right now, if any: the task it runs on (id and title), when it started and how long it has been running (seconds, and as H:MM or H:MM:SS). running: false when no timer is running. Timers are read-only here: starting and stopping them is done in Contreal itself.
get_client
ChatGPTReturns one client or lead by id: contact details, status, source, value, dates, the internal note and the activity log. Their projects, tasks, meetings and notes are read with search_projects / search_tasks / search_meetings / search_notes filtered by client_id. Available to owners, managers and team members.
get_client_communication
ChatGPTReturns the communication thread between the company and the client of one project — the same thread as the project's "communication" tab: work sent for approval, approvals and change requests, payment requests and payments, scheduled meetings and meeting summaries sent to the client. Each message has its type, who sent it (company or client, with name), when, whether it was read, the step it concerns and the payment request or meeting summary it carries. Newest first. Reading it does not mark anything as read.
get_file_link
ChatGPTReturns a temporary download link for one file the user may open, with its name, type and size. The link works without signing in and expires 5 minutes after this call; calling again gives a fresh one. File ids come from get_task, search_files, get_meeting (recording_storage_id) and the other tools that list files.
get_finance_summary
ChatGPTThe business's financial summary for a period — the figures at the top of the website's Finance page, in ILS: money in, money out and net for the period (default: the current month), all open income still expected, how many expenses wait for review, how many payment requests are open and how many of them are overdue. contains_estimates / valuation_incomplete say when foreign-currency amounts were estimated or could not be valued. For the rows behind the figures use search_expenses, search_incomes and search_payment_requests. Owners and managers only — for a team member the call is refused.
get_hours_summary
ChatGPTTotals of tracked (timer) hours for a period, broken down by person, task, project or day — the answer to "how many hours did X / the team / this project take in <period>". Returns the total, one line per group and any running timers. A timer run belongs in full to the day and the period it STARTED in, open runs included: a run that started before date_from is out even if it ended inside the period, and a 22:00→02:00 run counts entirely on its start day. Durations come as exact seconds and as H:MM or H:MM:SS (a duration, may exceed 24 hours; never rounded, so the lines add up to the total). scope is "company" for owners and managers; for a team member it is "self" and the answer covers only their own hours, whatever user_ids were passed, and their own lines are labelled "You (the asking user)" instead of their name. runningTimers lists timers still open. truncated with truncatedReason: "row_cap" means too many runs matched: coveredFrom is the day the figures actually start from. For the individual timer runs behind the totals, use list_time_entries.
get_me
ChatGPTReturns the Contreal user this connection acts as and the one company it is connected to: user id, name and email; company id and name; the user's role in the company (owner, manager or team_member) and whether a team member is a full member; and the current date and time in the company's time zone (Asia/Jerusalem). Every other tool answers with exactly what this user can see and do on the Contreal website (for example, only projects they are a member of); finance is visible to owners and managers only. The user id here is the id to pass wherever a tool filters by person, e.g. "my" tasks or hours.
get_meeting
ChatGPTReturns one meeting the user can access: title, status, date, duration, project, client, attendees, notes, the AI summary (and the client-facing summary), key points, insights and the action items the AI extracted from the conversation. has_transcript says whether a transcript exists; read it with get_meeting_transcript. recording_storage_id is the recording's file id for get_file_link.
get_meeting_transcript
ChatGPTReturns the full transcript of one meeting the user can access, one line per utterance as "[mm:ss] Speaker: text", together with the meeting's title, date, summary, creator and the Contreal tasks that were created from it. transcript is null while the recording is still being processed (status "processing") or when there was no recording. For the summary and action items alone, get_meeting is enough.
get_note
ChatGPTReturns one note the user can read, with its full body, title, what it is attached to (client, project, task, step, meeting or standalone), visibility (private = the author only, company = the team, client = also shown to the client) and author id.
get_project
ChatGPTReturns one project the user is a member of: name, status, type, price and currency, dates, description, client, its steps (id, title, type, status, order, dates) and its members. Use get_step for a step's tasks and details, search_tasks with project_id for the project's tasks.
get_step
ChatGPTReturns one step of a project: title, type, status, dates, description, the step's own data (depends on the step type), total tracked time in seconds and the step's tasks. Step ids come from get_project.
get_task
ChatGPTReturns one task the user can access: title, description, status, priority, deadline, estimate, project, client, step, meeting, creator, assignees, links, sub-tasks, tracked time, the full comment thread (author, text, time, attached files, replies) and the files attached to the task (file ids for get_file_link). It also returns the company's available_statuses and available_priorities, for a task in a project the project's steps, and assignable_members: the team members this connection can assign to the task (for a task in a project, its members; otherwise the company's full team members) — never client users, whom it cannot assign. These are the ids other tools take for these fields.
get_uploaded_files
ChatGPTLists the files of an upload link made by create_upload_link on this connection: file_id, file name, content type, size and status — uploaded (the bytes arrived; the file_id works in attach_file_to_task and create_meeting_from_recording) or pending (reserved, the upload has not finished). Files a person uploads on the page appear here as they finish, and a file PUT directly to its put_url is confirmed here on the first call after the PUT. Also says whether the link still accepts uploads (link_active, expires_at).
list_statuses_and_priorities
ChatGPTReturns the values this company uses for status and priority fields, as set in its Contreal settings (each company has its own names and ids): task_statuses (id, name, is_completed — a status whose is_completed is true completes the task; is_default marks the status a new task gets), task_priorities (id, name; is_default marks the priority a new task gets) and client_statuses (id, label, kind lead or client — a lead status makes the card a lead). These are the ids search_tasks, create_task and update_task take for status and priority, and create_client / update_client take for a client status. Call it before filtering or changing by a status or priority the user names in words, e.g. "move it to in progress".
list_team_members
ChatGPTLists the company's internal team (owners, managers and team members, not client users): user id, name, email, role, membership status and whether a team member is a full member. Use these user ids to filter tasks or hours by person. Any team member may call it.
list_time_entries
ChatGPTLists individual timer runs in a period, oldest first: who, which task and project, start, end (null while running) and duration in seconds, plus the period total. A timer run belongs in full to the day and the period it STARTED in, open runs included: a run that started before date_from is out even if it ended inside the period, and a 22:00→02:00 run counts entirely on its start day. Durations come as exact seconds and as H:MM or H:MM:SS (a duration, may exceed 24 hours; never rounded, so the lines add up to the total). scope is "company" for owners and managers; for a team member it is "self" and the answer covers only their own hours, whatever user_ids were passed, and their own lines are labelled "You (the asking user)" instead of their name. runningTimers lists timers still open. truncated with truncatedReason: "row_cap" means too many runs matched: coveredFrom is the day the figures actually start from. For totals per person, task, project or day, get_hours_summary answers directly.
search_clients
ChatGPTSearches the company's CRM: clients and leads (a lead is a prospective client; kind says which). Matches the text against name, business name, email and phone; returns id, name, contact details, status, source, value and follow-up date, newest first. The company's client statuses (lead and client stages) are listed by list_statuses_and_priorities. Use get_client for one client's full card (notes, activity), search_projects with client_id for their projects, search_tasks with client_id for their tasks. Available to owners, managers and team members.
search_expenses
ChatGPTLists the company's expenses as on the website's Expenses page: one-time expenses and each occurrence of a recurring expense, grouped by month (or week / year), with supplier, category, amount, currency, the amount in ILS, date, status and source, plus the total in ILS of everything that matches. Filter by text, date range, history or forecast, category, one-time / recurring, project, supplier, or status (rejected and skipped rows appear only when asked for by status). limit/offset count expense rows, not groups. Owners and managers only — for a team member the call is refused.
search_files
ChatGPTSearches the files stored in Contreal that this user may open: file id, file name, type, size, upload time and what each file is attached to (task, meeting, project, step, expense, income or invoice document), newest first. Filter by text in the file name, by MIME type, or by what it is attached to. The files of one task are also in get_task. To open or download a file, get_file_link returns a short-lived link.
search_incomes
ChatGPTLists the company's incomes as on the website's Incomes page — money expected or received from clients: amount, currency, expected date, received date, status, client, project, the payment request it came from and its invoice/receipt documents. Ordered by expected date, latest first. The text filter matches the income title or the name of its client or project. Owners and managers only — for a team member the call is refused.
search_invoices
ChatGPTLists the accounting documents the company issued through its invoicing provider (tax invoices, receipts, invoice-receipts), newest first: document number and type, status, amount, client, project and step, when and to whom it was sent, and a link to the document when the provider has it. Read-only: issuing or sending documents is done in Contreal itself. Owners and managers only — for a team member the call is refused.
search_meetings
ChatGPTLists the meetings on the website's Meetings page that this user can access (meetings they created, meetings of projects they belong to, and — for full members — meetings with no project): id, title, status, date and time, project and client ids and the AI summary, most recent first. Filter by text, project, client or status. Use get_meeting for key points, action items and participants, and get_meeting_transcript for what was said.
search_notes
ChatGPTSearches the internal notes this user can read (notes on clients, projects, tasks, steps and meetings, plus private notes of their own): id, title, the first 500 characters, what the note is attached to, visibility and author id, newest first. Filter by text in title or body, or by client, project or task. Use get_note for the full text.
search_payment_requests
ChatGPTLists the payment requests the company created for its clients, newest first: title, amount, VAT, currency, status (draft, sent, paid, cancelled, refunded), due date, when it was sent and paid, whether it waits for the owner to approve a manual payment, document status, client and project. Filter by project, client, status or text (title, project or client name). Read-only: creating, sending or cancelling requests is done in Contreal itself. Owners and managers only — for a team member the call is refused.
search_projects
ChatGPTLists the projects this user is a member of (the same list as the website's projects page), newest first: id, name, status (in_progress, on_hold, completed), type (fixed, hourly, retainer, hourly_bank), dates and client. Filter by name text, client or status. Use get_project for one project's steps and members.
search_tasks
ChatGPTLists the tasks this user can see on the website's tasks page: tasks they created, tasks in projects they are a member of, and (for full members) tasks without a project. Without filters it covers all of them, across every project. Each task comes with id, title, status (with is_completed), priority, deadline, project, client, step and assignees. Filter by text, open/completed, project, client, step, assignee (user ids from get_me / list_team_members), status or priority ids (the company's own, from list_statuses_and_priorities), or deadline. Tasks of on-hold projects are left out unless the search filters by project or step, as on the website. Default order: newest first. Use get_task for the description, comments and files of one task.
update_client
ChatGPTChanges a client or lead card; only the fields you pass change. Returns the saved card with the company's client statuses. Moving a lead to a status of kind client turns it into a client and records the date it became one; every status change is written to the card's activity log. Setting or changing the email creates (or links) a Contreal login for the new email and links it to the client's projects, and removes the previous email's login from those projects and from the company; no invitation or email is sent and nobody is notified. Available to owners, managers and full team members.
update_project
ChatGPTChanges a project the user is a member of; only the fields you pass change. Fields: name, client, status (in_progress, on_hold, completed) and the price fields that fit the project's type (fixed: price; hourly: price_per_hour; hourly_bank: price_per_hour + hours_amount; retainer: price + hours_amount). The type itself does not change. Changing the client moves the project's client access: the old client's login leaves the project and the new client's login (when it has one) joins it. Nobody is notified and nothing is sent to clients. Returns the project as it now is. Available to owners, managers and full team members.
update_task
ChatGPTChanges a task the user can access; only the fields you pass change, and the task as it now is comes back (fields and assignee_ids). Fields: title, description, deadline, estimate, project, step, client, status, priority, and assignees added or removed. Moving a task to another project also moves it to that project's client (a client_id passed with the move is applied after it), clears a step that is not in the new project and unassigns users who are not members of it; the user must be a member of the target project. The client can be any active client of the company, not only the project's client. Status and priority ids are the company's own (list_statuses_and_priorities); a status whose is_completed is true completes the task. Notifications go only to recipients who have task notifications turned on — in-app, plus email and/or WhatsApp for the channels they turned on; a recipient who turned task notifications off gets nothing, not even in-app. Newly assigned users other than you are notified of the assignment. Completing the task notifies its creator only when the new status is the company's own completed status (the one the website's "complete" uses — with several is_completed statuses, the others complete the task without notifying), and only when the creator is a team member and not you. Removing an assignee or changing other fields notifies nobody. Only internal team members can be assigned — through this connection a user whose role is client cannot be assigned. Nothing is sent to clients.
attach_file_to_task
Claudecreate_client
Claudecreate_meeting_from_recording
Claudecreate_project
Claudecreate_task
Claudecreate_upload_link
Claudeget_active_timer
Claudeget_client
Claudeget_client_communication
Claudeget_file_link
Claudeget_finance_summary
Claudeget_hours_summary
Claudeget_me
Claudeget_meeting
Claudeget_meeting_transcript
Claudeget_note
Claudeget_project
Claudeget_step
Claudeget_task
Claudeget_uploaded_files
Claudelist_statuses_and_priorities
Claudelist_team_members
Claudelist_time_entries
Claudesearch_clients
Claudesearch_expenses
Claudesearch_files
Claudesearch_incomes
Claudesearch_invoices
Claudesearch_meetings
Claudesearch_notes
Claudesearch_payment_requests
Claudesearch_projects
Claudesearch_tasks
Claudeupdate_client
Claudeupdate_project
Claudeupdate_task
Claude