add_external_link
ChatGPTAdds a link to an external document (Figma, Google Drive, Notion, Dropbox...) into a project's files section. Use this instead of create_file whenever the document already lives in another tool — it costs no storage and has no size limit. source_type must match the URL's domain, or use 'other' for anything else. Requires the upload_files permission.
add_project_member
ChatGPTAdds a person in the company to a project, so they can see it and be assigned work in it. Find the email with list_people. Public projects need no members — everyone in the company already has access — and the person must already be in the company; use invite_user for someone who is not (that is a separate, billable action). Members can be given the 'admin' role, which lets them manage the project's own tasks and lists.
add_team_member
ChatGPTAdds a person in the company to a team, which grants them access to every project the team is assigned to. Find the email with list_people and the team name with list_teams. The company owner cannot be put in a team: they already reach every project.
apply_task_template
ChatGPTCreates a task list in a project from one of the company's ready-made templates, with all of the template's tasks, in one call. Call list_task_templates first to find the template. Prefer this over inventing a checklist with create_task_list: a template is the shape the company itself decided on. The new list takes the template's title and description unless title or notes say otherwise; its title must be unique within the project, so pass title when applying the same template twice. The tasks are created with no assignee and no due date, the way the template stores them - assign them afterwards with update_task.
archive_project
ChatGPTArchives a project: it becomes read-only and drops out of the active project list, but nothing is deleted and it can be restored at any time with unarchive_project. This is the safe, reversible way to put a project away — prefer it over delete_project unless the user explicitly asked to permanently delete.
assign_team_to_project
ChatGPTAssigns a team to a project, giving every member of the team full access to it: they can open it, work in it and be assigned tasks on it. Use this after create_team, or instead of adding people one at a time with add_project_member. Public projects need no assignment.
complete_task
ChatGPTMarks a task complete, or reopens it when completed is false.
complete_task_list
ChatGPTMarks a task list complete, or reopens it when completed is false.
create_discussion
ChatGPTCreates a majlis topic (discussion) in a project. To attach a file, pass attachments with {name, content} for text you wrote or {name, content_base64} for bytes; it is embedded in the text itself, not published to the project's files.
create_event
ChatGPTCreates a calendar event (meeting) owned by the user. Attendees are invited by email and must be members of the same company; they are notified. Times are ISO 8601 and are interpreted in the company's time zone when no offset is given.
create_file
ChatGPTCreates a file in a project's files section from content you provide. Use content for text you wrote (notes, specs, summaries) — a .md name renders as markdown in Fareeqy, and a .pdf name renders your markdown into a real PDF document (max 256 KB of markdown). Any other plain-text extension (.txt, .csv, .json, .yml, .sql, .rb, .py, .sh, …) stores your text verbatim. content is refused for a binary container format such as .docx or .xlsx, because storing text under that name produces a file no viewer can open — send genuine bytes as content_base64 instead. Max 5 MB inline. A file on disk: send upload_byte_size + upload_checksum, PUT the bytes to the upload_url returned, then call with upload_id. Requires the upload_files permission. The file is virus-scanned after upload and is not downloadable until the scan clears — check scan_state in the response.
create_folder
ChatGPTCreates a folder in a project's files section. Nest it by passing parent_folder_id, or omit that for a top-level folder. Names must be unique among siblings. Requires the upload_files permission.
create_personal_task
ChatGPTCreates a personal task for the caller — a private to-do with no project or task list ("remind me to…"). Use this for the caller's own list; use create_task for work inside a project's task list. Returns the created task (its project_slug and task_list_slug are null). To attach a file, pass attachments with {name, content} for text you wrote or {name, content_base64} for bytes; it is embedded in the text itself, not published to the project's files.
create_project
ChatGPTCreates a new project. The caller becomes its owner and admin member.
create_task
ChatGPTCreates a single task within a task list. To create several tasks, use create_tasks (or the tasks argument of create_task_list) instead of calling this repeatedly. To attach a file, pass attachments with {name, content} for text you wrote or {name, content_base64} for bytes; it is embedded in the text itself, not published to the project's files.
create_task_list
ChatGPTCreates a task list within a project, optionally with its initial tasks in the same call. To attach a file, pass attachments with {name, content} for text you wrote or {name, content_base64} for bytes; it is embedded in the text itself, not published to the project's files. Attachments go on the LIST's notes, not on its tasks.
create_tasks
ChatGPTCreates several tasks in an existing task list, in one call.
create_team
ChatGPTCreates a team in the company, optionally with its members. A team on its own grants nothing: use assign_team_to_project afterwards to give every member access to a project. Team names are unique within the company; list_teams shows what already exists. The company owner cannot be put in a team: they already reach every project.
get_discussion
ChatGPTFetches a single majlis topic by its ref (the id list_discussions and search return), including its replies.
get_event
ChatGPTReturns a single calendar event, including its attendees. Find event ids with list_events.
get_file
ChatGPTReads the contents of a text file stored in a project (.md, .txt, .csv, .json, .yml and similar). Use list_files to find the file id. Returns the file's text along with its metadata. Binary and document formats (PDF, Word, images, archives) are refused with a download URL rather than converted. Files over 256 KB are refused as well.
get_project
ChatGPTFetches a single project by its ref (the id list_projects and search return), including its task lists.
get_task
ChatGPTFetches a single task by its ref (the id list_tasks, list_my_tasks and search return), including its most recent comments (oldest first, at most 100). Check comments_total and comments_truncated; when truncated, read the rest with list_comments.
get_task_list
ChatGPTFetches a single task list by its ref (the id list_task_lists and search return), including its tasks and its most recent comments (oldest first, at most 100). Check comments_total and comments_truncated; when truncated, read the rest with list_comments.
list_discussions
ChatGPTLists the majlis topics (discussions) within a project.
list_events
ChatGPTLists calendar events (meetings) the user organizes or was invited to. Defaults to upcoming events only; pass from/to to look at a specific window, or include_past to reach back. Use this to find the event_id the other event tools need. Returns at most limit events (default 50); check total_count and truncated.
list_files
ChatGPTLists the files and folders directly inside a project folder (or the project root if folder_id is omitted). Not recursive — pass a folder's id back as folder_id to look inside it. Use this to find the file_id and folder_id that the other file tools need. Returns at most limit files (default 100); check total_count and truncated.
list_my_tasks
ChatGPTLists tasks assigned to the caller, across all projects plus their personal tasks. filter: 'in_progress' (default) = every open task; 'overdue' = past its due date; 'today' = due today in the company's timezone; 'focus' = only the tasks the caller has hand-picked into their focus list, in the order they arranged them; 'completed_this_week' = tasks the caller FINISHED since the start of the current week (weeks start Saturday, in the company's timezone), newest first, with the window's start returned as since. The first four return open tasks only and never a completed one, so to report progress — what was done AND what is still open — call this tool twice. Overdue and today can overlap — a task due earlier today is both, and both exclude tasks with no due date. Every task carries focus_order: its position in the focus list, or null if the caller has not put it there. Returns at most limit tasks (default 50); if truncated, pass next_offset as offset.
list_notifications
ChatGPTLists the caller's own notifications, newest first, with a link to the page each one points at. Defaults to UNSEEN only, which is the answer to "is anything waiting for me"; pass status 'all' or 'seen' for the rest. Reading them here does not mark them read, use mark_notification_read for that. Returns at most limit (default 30); check total_count and truncated.
list_people
ChatGPTLists the people in the caller's company with their emails, roles and teams. Use this to find the email address that create_task/update_task (assignee_email) and create_event (attendee_emails) require, or to check whether someone is already here before inviting them. Each person carries a status: 'active' means they can be assigned work; 'pending' means they were invited and have not accepted yet, so they cannot be assigned work and re-inviting them will be refused. For who can be assigned work on a SPECIFIC project, use list_project_members. Returns at most limit people (default 100); check total_count and truncated.
list_permissions
ChatGPTLists every permission key a role can hold, grouped by category, with the Arabic label and description shown on the company's own roles screen. Call this before create_role or update_role: a role is a set of these exact keys and any other value is rejected. The owner role is not in this system, it grants everything including keys added later.
list_personal_tasks
ChatGPTLists the caller's personal tasks — their private to-dos with no project or task list — in the caller's own list order. Pending only unless include_completed is true. Use list_my_tasks instead for tasks assigned across projects. Returns at most limit tasks (default 100); if truncated, pass next_offset as offset.
list_project_events
ChatGPTLists what has happened in a project — tasks created and completed, members added, files uploaded, the project renamed — newest first. Use it to answer "what changed here recently" or to build a summary of a period; pass since to bound it to that period. Each event carries its type, when it happened, and who did it. Returns at most limit events (default 50); check total_count and truncated to see whether more exist.
list_project_members
ChatGPTLists the people who can be assigned work on a project, with their emails. Use this to find the assignee_email that create_task/update_task take (attendees for create_event come from the same company roster). An email returned here is guaranteed assignable on this project.
list_projects
ChatGPTLists the projects the caller can access. Archived projects are excluded unless requested. Each project carries id, its ref (prj-8f3kd): send it back as project_slug. Returns at most limit projects (default 100); if truncated, pass next_offset as offset.
list_roles
ChatGPTLists the company's roles with their Arabic names, whether each is a built-in role (owner/manager/team_member) or a custom one, and how many people hold it. Use it to find a valid role handle for invite_user or set_user_role. Callers who may manage roles also get each role's permission keys. The owner role grants everything and can never be assigned.
list_task_lists
ChatGPTLists the task lists within a project, in board order. Each list carries id, its ref (lst-4m2qp): send it back as task_list_slug, on its own. Returns at most limit lists (default 100); if truncated, pass next_offset as offset.
list_task_templates
ChatGPTLists the ready-made task lists (templates) the company has saved, each with the tasks it contains. Read this BEFORE inventing a checklist of your own: if a template already covers what the user asked for, apply it with apply_task_template instead, so the work comes out in the shape the company decided rather than one you made up. Templates are company-wide, not per-project. Returns at most limit templates (default 50); check total_count and truncated.
list_tasks
ChatGPTLists the tasks within a task list, in board order. Each task carries id, its ref (tsk-9wb7t): send it back as task_slug, on its own, to read or change that task. Returns at most limit tasks (default 100); if truncated, pass next_offset as offset.
list_teams
ChatGPTLists the company's teams with their members and the projects each team is assigned to. A team has no id: its NAME is the handle every other team tool takes. Read this before naming a team anywhere else. Assigning a team to a project grants every member of that team full access to it, so the projects listed here are what a team membership is worth. Returns at most limit teams (default 50); check total_count and truncated.
mark_notification_read
ChatGPTMarks the caller's own notifications as read. Pass notification_ids (from list_notifications) to mark specific ones, or omit it to mark ALL unread notifications as read. Nothing is deleted: they stay readable with status 'seen'. At most 100 ids per call.
move_task
ChatGPTMoves a task to a different task list within the same project. Address the task and the target list by their refs (the id a read returned); no project or current list is needed. The task keeps its details and is appended to the end of the target list. To move work to another project, move its whole task list with move_task_list.
move_task_list
ChatGPTMoves a task list (with its tasks) to another project. Tasks assigned to someone who is not a member of the target project are unassigned. Fails if the target already has a task list with the same title, or if the target is the same project.
reply_to_discussion
ChatGPTReplies to a majlis topic (discussion). To attach a file, pass attachments with {name, content} for text you wrote or {name, content_base64} for bytes; it is embedded in the text itself, not published to the project's files.
search
ChatGPTFinds records by name across projects, task lists, tasks, folders, files and majlis topics, within what the caller can access; Arabic spelling variants match. Use it to turn a name into the id (ref) every other tool takes, instead of walking the hierarchy. A kind in truncated had more than per_type matches: narrow the query or raise per_type. A kind in widened had no record carrying every word, so its results are only candidates: confirm with the user before acting on one.
set_focus
ChatGPTAdds one of your own tasks to your focus list, removes it, or moves it to a position within the list. The focus list is the hand-picked "what I am doing now" list on your dashboard; read it with list_my_tasks using filter 'focus'. Only tasks assigned to you can be focused — the list belongs to the person the task is assigned to. Works for personal tasks too.
set_time_spent
ChatGPTRecords how long a task took. Send time_spent as "1:30" (hours:minutes), "1.5" (decimal HOURS) or "90" (whole minutes) — all three mean ninety minutes. Send an empty string to clear it back to unmeasured. This REPLACES the task's total rather than adding to it, so read time_spent_minutes first if you mean to accumulate. Works for personal tasks too. Requires a plan that carries time tracking.
sort_tasks
ChatGPTReorders the tasks inside one task list — the board order that list_tasks and get_task_list answer in. Send task_slugs with the list's COMPLETE new order (every task in it, exactly once, first to last) to re-sort the whole list, or task_slug with position to move one task to a 1-based place and push the rest down. Read the current order first with list_tasks (raise its limit when it reports truncated) or with get_task_list, which returns every task whatever the length. To move a task to a DIFFERENT list, use move_task instead.
submit_feedback
ChatGPTSends the caller's feedback about Fareeqy itself to the Fareeqy team: a bug report, a feature request, or a suggestion. Use this only for feedback ABOUT THE PRODUCT; notes about the caller's own work belong in a task, a comment or a majlis topic. Support replies by email, so there is no thread to read back here. Screenshots cannot be sent through this tool. Show the caller the exact subject and message before calling it: what is sent is attributed to them.
unarchive_project
ChatGPTRestores an archived project to active, so it can be edited again. Does not apply to demo projects, which cannot be restored once archived.
update_discussion
ChatGPTUpdates a majlis topic. Only the provided fields change. To attach a file, pass attachments with {name, content} for text you wrote or {name, content_base64} for bytes; it is embedded in the text itself, not published to the project's files. Attachments REPLACE the body's existing files, so send body alongside them.
update_event
ChatGPTUpdates a calendar event. Only the organizer can edit it. Only the fields you pass change, EXCEPT attendee_emails, which replaces the whole guest list when given — pass the full list, not just the additions. Attendees are notified of additions, removals and time changes.
update_project
ChatGPTUpdates a project. Only the provided fields change.
update_task
ChatGPTUpdates a task. Only the provided fields change. To attach a file, pass attachments with {name, content} for text you wrote or {name, content_base64} for bytes; it is embedded in the text itself, not published to the project's files. Attachments REPLACE the notes' existing files, so send notes alongside them.
update_task_list
ChatGPTUpdates a task list. Only the provided fields change. To attach a file, pass attachments with {name, content} for text you wrote or {name, content_base64} for bytes; it is embedded in the text itself, not published to the project's files. Attachments REPLACE the notes' existing files, so send notes alongside them.
update_team
ChatGPTRenames a team or changes its description or colour. Does not change who is in the team: use add_team_member and remove_team_member for that. Only the fields you send are changed.
whoami
ChatGPTReturns the authenticated user, their company, role, the current access token scopes, and the company time zone with today's date in that zone (use these to resolve relative dates like "tomorrow").
add_external_link
Claudeadd_project_member
Claudeadd_team_member
Claudeapply_task_template
Claudearchive_project
Claudeassign_team_to_project
Claudecancel_invitation
Claudecomplete_task
Claudecomplete_task_list
Claudecreate_discussion
Claudecreate_event
Claudecreate_file
Claudecreate_folder
Claudecreate_personal_task
Claudecreate_project
Claudecreate_role
Claudecreate_task
Claudecreate_task_list
Claudecreate_tasks
Claudecreate_team
Claudedelete_event
Claudedelete_file
Claudedelete_folder
Claudedelete_project
Claudedelete_task
Claudedelete_task_list
Claudedelete_team
Claudeget_discussion
Claudeget_event
Claudeget_file
Claudeget_project
Claudeget_task
Claudeget_task_list
Claudeinvite_user
Claudelist_discussions
Claudelist_events
Claudelist_files
Claudelist_my_tasks
Claudelist_notifications
Claudelist_people
Claudelist_permissions
Claudelist_personal_tasks
Claudelist_project_events
Claudelist_project_members
Claudelist_projects
Claudelist_roles
Claudelist_task_lists
Claudelist_task_templates
Claudelist_tasks
Claudelist_teams
Claudemark_notification_read
Claudemove_task
Claudemove_task_list
Clauderemove_project_member
Clauderemove_team_member
Claudereply_to_discussion
Clauderesend_invitation
Claudesearch
Claudeset_focus
Claudeset_time_spent
Claudeset_user_role
Claudesort_tasks
Claudesubmit_feedback
Claudeunarchive_project
Claudeunassign_team_from_project
Claudeupdate_discussion
Claudeupdate_event
Claudeupdate_project
Claudeupdate_role
Claudeupdate_task
Claudeupdate_task_list
Claudeupdate_team
Claudewhoami
Claude