accueil / serveurs / Dev & Code / net.tasklite/mcp
net.tasklite/mcp
serveur MCP (Model Context Protocol) · tasklite 0.17.1
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que net.tasklite/mcp est sûr ?
Au dernier audit MCP Hub, le serveur MCP « net.tasklite/mcp » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 61 outils
- add_app_user≈ 622 tokens
Give a person access to an app by their phone number: the phone and a role, nothing else. This is how the people who run an app (the business owner, a manager, staff) get into its admin screen, whose endpoints are in row-level security mode "shared". The person needs no invite code and does not have to sign in first. If the phone already signed in to this organization with a code, access is on at once and the answer has status "active" and their userId. Otherwise the answer has status "pending" and a pendingId: nothing is created for the number yet, and the access opens by itself the first time that phone signs in to the app with an SMS code (POST /auth/otp/send, then /auth/otp/verify). The phone is matched whatever its spelling: 054-1234567, +972 54 123 4567 and 972541234567 are one number; a number outside Israel needs its country code. Calling again for the same phone sets its role again, and switches back on a user who was switched off. Roles: editor (reads and writes), viewer (reads), submitter (creates). The app must still sign people in by phone code; a person who signs in another way (email and password, Google) is a different account, give them access with set_app_user_role after their first sign-in. Requires organization owner or admin (an editor gets 403).
Paramètres, retour & exemple (5)
Paramètresrole· string · optionnel · viewer | editor | submitter
App-level access role: editor (reads and writes; the default), viewer (reads), submitter (creates)appId· string · requis
App id or slug (from list_apps / create_app)phone· string · requis
The phone number, e.g. "0541234567" or "+972541234567"; any spelling of an Israeli mobile, or any other number with its country codeexpiresInDays· integer · optionnel
For a phone that has not signed in yet: days the waiting access stays valid (1-365). Omit and it waits with no time limit, which is the normal choiceorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "add_app_user", "arguments": {"appId": "texte", "phone": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - add_comment≈ 264 tokens
Post a comment on an item's thread. To notify people, pass their user ids in mentionedUserIds (each also appears as an @mention). attachmentIds references already-uploaded files. Needs projectId and itemId.
Paramètres, retour & exemple (5)
ParamètresitemId· string · requis
Item (row) idcontent· string · requis
The comment textprojectId· string · requis
Project id (from list_projects / create_project)attachmentIds· array · optionnel
Ids of already-uploaded attachments to linkmentionedUserIds· array · optionnel
User ids to @mention and notify
Exemple d'appel{"name": "add_comment", "arguments": {"itemId": "texte", "content": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - build_backend≈ 3174 tokens
Build a whole backend in one call from a spec you compose: the project, its boards, their typed columns (including relations between the boards), optional sample rows, and optionally a published REST API with one endpoint per board and a server-side key. Use it whenever the user describes a system ("a backend for my repair shop: customers, orders, payments") instead of calling create_project, create_board, create_column, create_app, publish_app, create_app_endpoint and create_app_api_key one by one. You do the design, pick column types by meaning (phone, date, currency, dropdown/status with options for closed choices), link boards with a relation column (type "relation", relatedBoard: "<board name in this spec>", relationType: many_to_one for an order→customer link), and this tool executes it and returns one compact summary. API field names are derived from column names and never collide with reserved item fields, so there is nothing to retry. Boards are created as plain data tables (kind "data": only the columns you define, no task fields); set kind "tasks" on a board where people track work to do and want status, priority, assignee and due date built in. Every row still has a title. When the API has its own users, api.rowLevelSecurity: true gives every endpoint mode "owner"; a board may carry its own rowLevelSecurity instead (mode shared, phone or relation, with columns named as in this spec), e.g. Coaches { mode: "phone", phoneColumn: "Phone" } and Trainees { mode: "relation", relationColumn: "Coach", identityPhoneColumn: "Phone", allowInvites: true }.
Paramètres, retour & exemple (4)
Paramètresapi· object · optionnel
Include to publish a REST API over every board and mint a key; omit for a boards-only buildboards· array · requis
The boards (tables) of the backend, in any orderproject· object · requis
The project that holds the boardsorganizationId· string · optionnel
Organization id; needed only when the account belongs to several (the error then lists them)
Exemple d'appel{"name": "build_backend", "arguments": {"boards": [], "project": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - check_invite_code≈ 250 tokens
Check whether an invite code works right now, the way an app does before sign-up (POST /auth/invites/check, the same public route, limited to 10 calls a minute per address). A working code answers { valid: true, organizationId, app: { name, slug }, label, expiresAt }; anything else (unknown, revoked, expired, used up, its row deleted, its app switched off or deleted) answers only { valid: false }, with no reason, by design. It does not use the code up. For the reason a code stopped working, read its status in list_app_invites.
Paramètres, retour & exemple (1)
Paramètrescode· string · requis
The invite code, e.g. "K7PM-4XQ2"; case and the dash do not matter
Exemple d'appel{"name": "check_invite_code", "arguments": {"code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - configure_app_settings≈ 560 tokens
Read or change the settings object of an app. Call with only appId to read. To change, pass set: the keys in it are MERGED into the current settings (objects merge key by key at every depth, arrays and plain values replace, null removes a key). The server itself does not merge: PATCH replaces the whole settings object with what it is sent, so this tool reads the app, merges, and writes the full object back; two writers at the same moment can still overwrite each other, so do not run it in parallel on one app. Settings the server reads: passwordReset.returnUrls (array of up to 50 URLs the "reset password" email may send a user back to, matched by scheme, host, port and path prefix; needed only for a custom app scheme such as myapp://reset or a domain other than the app's own {slug}.tasklite.dev and its connected custom domains, which are always allowed; http is never accepted), language (the language of the password reset email: a value starting with "he" gives Hebrew, any other value English; left out, the user's own language decides), endUserDeletion.rows ("delete": when an end user deletes their account, the rows they wrote in this app are deleted with it and erased for good 30 days later; left out, the rows stay with the author shown as a deleted account). Other keys are stored as given and returned, and the server does not act on them.
Paramètres, retour & exemple (3)
Paramètresset· object · optionnel
Keys to merge into the settings, e.g. { passwordReset: { returnUrls: ["myapp://reset"] } } or { endUserDeletion: { rows: "delete" } }. null removes a key: { language: null }. Omit to read without changing anythingappId· string · requis
App id or slug (from list_apps / create_app)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "configure_app_settings", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - configure_external_access≈ 728 tokens
Read or change how EXTERNAL users (people who sign up to your app through TaskLite auth) get into an organization. This policy governs sign-up by email and password and by Google. Sign-in by a phone code (POST /auth/otp/send, then /auth/otp/verify) obeys only "invite": under "closed", "approval" and "open" any phone that verifies a code becomes an external member of the organization, who reaches nothing until an endpoint's row-level security or the app's access list (add_app_user) gives them something; under "invite" a new phone needs an invite code or an add_app_user grant. The two ways in that obey the whole policy: email and password (POST /auth/register-external with this organizationId, then POST /auth/login), or Google (POST /auth/google-external with a Google ID token and this organizationId). Either way the answer carries a token the app sends as Authorization: Bearer on every App API call. registrationPolicy: "open", in at once; "approval", an organization admin approves each signup (TaskLite mails the admins on every signup, and the person once approved; unapproved users are never billed); "invite", a new person gets in only with an invite code (create_app_invite, or a code a user of the app minted on a relation endpoint with allowInvites): the app sends it as inviteCode with POST /auth/otp/verify, /auth/register-external or /auth/google-external, a sign-up without one is refused with 403 INVITE_REQUIRED and a bad code with 403 INVITE_INVALID, while people who are already members keep signing in as before; "closed" (the default), self-signup refused, external users are created by an admin. Under every policy a valid invite code admits its holder as if the organization were open, so "invite" is the policy for an app where people join only through someone who invited them (a coach inviting trainees). appLoginUrl: the page of YOUR app where these users log in, it becomes the "Log in" button in the approval email, so set it whenever you deploy an app that uses this flow; pass "" to clear. Call with no changes to just read the current settings. Requires organization admin.
Paramètres, retour & exemple (3)
ParamètresappLoginUrl· string · optionnel
https URL of your app's login page for external users; "" clears itorganizationId· string · optionnel
Defaults to the credential organizationregistrationPolicy· string · optionnel · closed | approval | open | invite
How external sign-ups are admitted: open, approval, invite (only with an invite code) or closed
Exemple d'appel{"name": "configure_external_access", "arguments": {"appLoginUrl": "texte", "organizationId": "texte", "registrationPolicy": "closed"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_app≈ 192 tokens
Create an app, a named API surface over the boards of a project, for an external frontend. Then add endpoints and an API key.
Paramètres, retour & exemple (3)
Paramètresname· string · requis
Human-readable nameprojectId· string · requis
Project id (from list_projects / create_project)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "create_app", "arguments": {"name": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_app_api_key≈ 330 tokens
Create an API key for an app. SECURITY: the key must live server-side only (env var, Next.js API routes), never in browser code. If the app has its own users, the server also sends `X-App-User: <user id>` with the key so per-user endpoints know who is acting.
Paramètres, retour & exemple (4)
Paramètresname· string · optionnel
Human-readable nameappId· string · requis
App id or slug (from list_apps / create_app)scopes· array · optionnel
Permissions on the key: "read", "write", "email". Omit to match the app: write when any endpoint accepts POST, PATCH or DELETE. Sending email from the app server (POST /apps/<slug>/api/_email/send) needs the key to include "email" or "write"; a read-only key is refused with 403 APP_KEY_SCOPE_REQUIRED.organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "create_app_api_key", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_app_endpoint≈ 2353 tokens
Expose a board as a REST endpoint of an app: /apps/{appSlug}/api/{slug}. exposedColumns limits which columns are readable/writable. rowLevelSecurity.enabled makes the endpoint per-user: the developer's server sends `X-App-User: <their user id>` next to the API key, and the endpoint returns, updates and deletes ONLY that user's rows (401 without the header). Use it whenever the app has its own users. rowLevelSecurity.mode chooses which rows a user reaches: owner (the rows they created), shared (all rows, for authorized users), phone (the rows that carry their verified phone) or relation (the rows linked through a relation column to the row that stands for them). An app with two kinds of people in one organization, coaches and their trainees, is built from these: the Coaches board in mode phone (phoneColumn = its phone column), so each coach reads and edits his own row; Trainees in mode relation with relationColumn = its Coach column and identityPhoneColumn = the Coaches phone column, so a coach who signed in by phone sees only his trainees; boards one hop further (weigh-ins of a trainee) in mode relation with relationColumn = the Trainee column and viaColumn = Trainees.Coach for the coach, plus a second endpoint on the same board without viaColumn for the trainee herself. A trainee becomes her row through an invite code (create_app_invite, or allowInvites so the coach mints it in the app) or link_app_user.
Paramètres, retour & exemple (8)
Paramètresname· string · requis
Human-readable nameslug· string · requis
URL slug: lowercase letters, digits and dashesappId· string · requis
App id or slug (from list_apps / create_app)boardId· string · requis
Board id (from list_boards / create_board)allowedMethods· array · optionnel
HTTP methods the endpoint accepts: GET, POST, PATCH, DELETEexposedColumns· array · optionnel
Columns the endpoint reads and writes, with the JSON key each one gets; without it the endpoint returns bare metadataorganizationId· string · optionnel
Organization id; defaults to the credential organization when omittedrowLevelSecurity· object · optionnel
Row-level security. Off: whoever holds the app key reads everything. On: every request must name a signed-in user, and mode decides which rows they reach. Only the keys listed here exist; an unknown key is refused, not ignored
Exemple d'appel{"name": "create_app_endpoint", "arguments": {"name": "texte", "slug": "texte", "appId": "texte", "boardId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_app_invite≈ 698 tokens
Create an invite code for an app (8 characters shown as XXXX-XXXX, typed without regard to case or the dash). The person signs up or signs in through the app with the code: the app sends it as inviteCode with POST /auth/otp/verify, /auth/register-external or /auth/google-external, after it may check it with POST /auth/invites/check. An invite does one or both of two things, and must do at least one: itemId links the new user to that row, so they "are" the row for every endpoint in row-level security mode "relation" (invite a trainee to her own Trainees row, or a coach to his Coaches row); role puts them on the app's access list (viewer, editor or submitter), which is what mode "shared" endpoints check. A valid code also admits a new person into an organization whose registration policy is "invite" or "closed" (configure_external_access). An existing access row is never changed by an invite: it does not re-enable a user who was switched off and does not raise a role. Requires organization owner or admin (an editor gets 403). To let the app's own users invite (a coach invites his trainees from inside the app), set allowInvites on the relation endpoint instead; the app then calls POST /apps/{appSlug}/api/{endpointSlug}/{itemId}/invites.
Paramètres, retour & exemple (7)
Paramètresrole· string · optionnel · viewer | editor | submitter
App-level access role granted on sign-up: viewer (reads), submitter (creates), editor (reads and writes). Omit to grant no access row. Required unless itemId is givenappId· string · requis
App id or slug (from list_apps / create_app)label· string · optionnel
Shown to whoever checks the code before signing up, e.g. "Dana, trainee of coach Avi"; up to 120 characters. Do not put anything private in it: the check is publicitemId· string · optionnel
Id of the row the new user becomes (from query_items); any live row in the app's organization. Required unless role is givenmaxUses· integer · optionnel
How many people may use the code, 1 to 1000; defaults to 1 (one person)expiresInDays· number · optionnel
Days until the code stops working, 1 to 365; defaults to 30organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "create_app_invite", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_automation≈ 1913 tokens
Create an automation on a board: when something happens, do something. The most useful action here is http_request, which calls an external API and writes the answer back into columns, pair it with the "scheduled" trigger and the board keeps itself up to date (prices, exchange rates, shipment status, weather). Triggers: item_created, status_changed, column_value_changed, date_approaching, scheduled. Actions: http_request, send_notification, send_email, send_push, change_status, set_column_value, create_cross_board_item, send_webhook. The scheduled trigger has no cron expression: the server checks once an hour, and triggerConfig takes { intervalHours, runAtHour } only (intervalHours: at least this many hours between runs, default 24; runAtHour: 0-23, run only during that hour of the day in UTC, not in the user's time zone, so convert: 08:00 in Israel is runAtHour 5 in summer and 6 in winter). A scheduled run executes the actions once for every row of the board that passes conditions, so filter with conditions. send_push sends a notification to the phones of app users through the app's own Firebase project (set up once per app: push_status; try it with send_test_push). Its config: { title, body, data, userIds, recipientsFromRelation, includeRowOwner, sound, badge, dataOnly }. title and body take {{column name}} placeholders, title defaults to the row title. Recipients are the union of: the row's owner under row-level security (includeRowOwner, default true; false leaves them out), userIds (fixed user ids, as in list_app_users), and recipientsFromRelation, a dotted path of column NAMES such as "Client.Coach.Coach user" that walks relation columns from this row and whose LAST segment must be a people column holding user ids (a single segment is a people column on this board); it does not resolve the user linked to a row by an invite or by phone, so without such a people column use userIds or the row owner. data is a flat object of strings the app reads to decide where to open (itemId and boardId are added). sound: "default" or the file name of a sound bundled in the app; badge: 0 to 99999, 0 clears; dataOnly: true shows nothing and delivers only data (no title, body, sound or badge; iOS may throttle or drop it). With no recipient the action is skipped, not failed. Two more things every action list can use: a { type: "delay", config: { minutes | hours | days } } action pauses the run and resumes the actions after it later (reminders, follow-ups); and any network action (http_request, send_webhook, send_email, send_whatsapp) may carry config.retry: { attempts (1-5), delaySeconds (1-60) }. send_webhook accepts config.secret for an HMAC signature. send_email sends mail from the organization to the people on a row. Its config: { to, subject, body, columnEmailField, fromName, replyTo, kind, attachments }. kind is "transactional" (the default: orders, receipts, notifications) or "marketing" (promotional mail: it needs the Pro plan or higher and a verified sender domain, and it gets an unsubscribe footer; people who unsubscribed are skipped). attachments is an array of FILE column ids on the triggering row (or {{column.<id>}}): the stored files in those cells are attached, up to 5MB in total, and a missing file is skipped instead of failing the action. Email is counted per month by plan: Free 300, Plus 3000, Pro 20000 (read the numbers with get_email_usage); a message held back by the quota is recorded as skipped in the communications log and can be resent from there. To send email from an app's own server instead of an automation, POST /apps/<slug>/api/_email/send with the app server key (X-API-Key, never a user token; the key needs the "email" or "write" scope, see create_app_api_key): { to: [up to 50 addresses], subject, html or text, replyTo, kind, attachmentIds: [stored file ids] }; each app may send 500 a day (429 APP_EMAIL_DAILY_LIMIT). create_cross_board_item copies a new row to another board: config { targetBoardId, title?: "{{item.title}}", columnValues: { "<column id on the TARGET board>": "{{<column NAME on this board>}}" } }; there is no mapping field, and a column left out is not copied. To act only on some rows pass conditions, e.g. [{ field: "<column id on this board>", operator: "equals", value: "New seller" }]. Change an automation later with update_automation; call list_automations first so you do not add a second one that does the same thing.
Paramètres, retour & exemple (8)
Paramètresname· string · requis
Human-readable nameactions· array · requis
e.g. [{ type: "http_request", config: { url: "https://api.frankfurter.app/latest?from=USD&to=ILS", method: "GET", responseMapping: [{ path: "rates.ILS", columnId: "<column id from get_board_schema>" }] } }]boardId· string · requis
Board id (from list_boards / create_board)trigger· string · requis · item_created | status_changed | column_value_changed | date_approaching | scheduled
Event that starts the automation: item_created, status_changed, column_value_changed, date_approaching, or scheduled (checked hourly; an interval in hours and an optional hour of the day in UTC, not a cron expression)isActive· boolean · optionnel
Whether it is activeprojectId· string · requis
Project id (from list_projects / create_project)conditions· array · optionnel
Run only for rows that match, e.g. [{ field: "<column id>", operator: "equals", value: "New seller" }]triggerConfig· object · optionnel
For scheduled: { intervalHours?: number (default 24), runAtHour?: 0-23 in UTC }, e.g. { intervalHours: 1 } for every hour, or { runAtHour: 5, intervalHours: 23 } for once a day at 05:00 UTC. The interval is measured from the previous run, which ends a little after the hour, so with runAtHour use 23, not 24: with 24 the next day's check falls just short and the run slips a day. A cron field is not read. For column_value_changed: { columnName }
Exemple d'appel{"name": "create_automation", "arguments": {"name": "texte", "actions": [], "boardId": "texte", "trigger": "item_created", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_board≈ 307 tokens
Create a board (a data table) inside a project. Add typed columns with create_column afterwards. kind: "tasks" (default) also gives the board the built-in task columns, status, priority, assignee, due date, tags, for work people track; "data" creates a plain table with only the columns you add, for records such as customers, products or orders (requires a TaskLite server from 2026-09-06; older servers ignore kind).
Paramètres, retour & exemple (4)
Paramètreskind· string · optionnel · tasks | data
"tasks": with the built-in task columns (status, priority, assignee, due date, tags). "data": only the columns you add. Default tasks.name· string · requis
Human-readable nameprojectId· string · requis
Project id (from list_projects / create_project)description· string · optionnel
Free-text description
Exemple d'appel{"name": "create_board", "arguments": {"name": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_column≈ 528 tokens
Add a typed column to a board. Valid types: text, rich_text, number, status, date, datetime, duration, people, checkbox, dropdown, label, priority, link, email, phone, relation, lookup, rollup, formula, rating, currency, file. Choose by meaning, date for dates, phone for phones, number/currency for amounts, dropdown/status (with settings.options as an array of labels) for closed choices; text is for free text only. An obvious name/type mismatch is rejected with the suggested type; pass force:true to override. Rules go in settings.validation: { unique, min, max, minLength, maxLength, pattern, patternMessage }, enforced on every write (UI, MCP, App API). Closed choices (dropdown/status) reject values outside settings.options unless settings.allowCustom is true.
Paramètres, retour & exemple (7)
Paramètresname· string · requis
Human-readable nametype· string · requis
Action type: http_request, send_notification, send_email, send_whatsapp, change_status, set_column_value, create_cross_board_item, send_webhook or delayforce· boolean · optionnel
Create the column even when the name suggests a different typeboardId· string · requis
Board id (from list_boards / create_board)settings· object · optionnel
Type-specific settings. For dropdown/status/priority: options, either as labels ["A","B"] or as full objects [{value,label,color}], labels are expanded server-side, and colors are assigned if you do not supply them.projectId· string · requis
Project id (from list_projects / create_project)isRequired· boolean · optionnel
Require a non-blank value on every App API create
Exemple d'appel{"name": "create_column", "arguments": {"name": "texte", "type": "texte", "boardId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_item≈ 414 tokens
Create an item (row) with all of its data in one call. cells maps columnId -> value (use get_board_schema for column ids); every cell is saved with the row. Use set_cell only for later edits.
Paramètres, retour & exemple (9)
Paramètrestags· array · optionnel
Tags as an array of stringscells· object · optionnel
Cell values keyed by column id: { "<columnId>": value }. Scalars, { amount, currency } for currency, { relatedItemIds: [...] } for relationstitle· string · requis
Item title, shown as the row namestatus· string · optionnel
Task status of the row on a task board: todo, in_progress, review or done. Refused on a data board, where it would only write a hidden task field: set that board's status column with cells (create_item) or set_cell (update_item) insteadboardId· string · requis
Board id (from list_boards / create_board)dueDate· string · optionnel
ISO datepriority· string · optionnel
Priority: low, medium, high or urgentprojectId· string · requis
Project id (from list_projects / create_project)description· string · optionnel
Free-text description
Exemple d'appel{"name": "create_item", "arguments": {"title": "texte", "boardId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_project≈ 175 tokens
Create a project (a business process container). Boards with data live inside projects.
Paramètres, retour & exemple (3)
Paramètresname· string · requis
Human-readable namedescription· string · optionnel
Free-text descriptionorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "create_project", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - define_app_role≈ 333 tokens
Create a business role of an app's project, or change the label of an existing one (calling again with the same key and a label updates the label). A role is only a name; what it may do is written in the board policies. Example: key "manager", label "Agents manager". Roles can also come from the data itself with set_policy_identity (an employees board with a role column) instead of grant_app_role per person. Requires organization owner or admin.
Paramètres, retour & exemple (4)
Paramètreskey· string · requis
Role key, e.g. "manager". Lowercase letters, digits, dash or underscore are safest; "*" and "public" are built in and cannot be definedappId· string · requis
App id or slug (from list_apps / create_app)label· string · optionnel
Display name, e.g. "Agents manager". Defaults to the keyorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "define_app_role", "arguments": {"key": "texte", "appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_app_endpoint≈ 294 tokens
Delete an endpoint of an app for good: /apps/{appSlug}/api/{slug} stops answering at once and the endpoint cannot be brought back (create it again with create_app_endpoint). The board and its rows are not touched. Confirm with the user first: a frontend that calls this endpoint breaks. To take an endpoint offline and keep its definition, use update_app_endpoint with isActive false instead (list_app_endpoints shows active endpoints only, so keep the id). Get the endpoint id from list_app_endpoints.
Paramètres, retour & exemple (3)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)endpointId· string · requis
Endpoint id (from list_app_endpoints)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "delete_app_endpoint", "arguments": {"appId": "texte", "endpointId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_app_role≈ 273 tokens
Delete a business role of an app's project. Check first with list_app_role_grants who holds it and with get_board_policy where policies still name it: a policy that names a role that no longer exists simply matches nobody. Requires organization owner or admin.
Paramètres, retour & exemple (3)
Paramètreskey· string · requis
Role key: a short stable id such as "manager" or "agent" (what policies name). Built-in keys: "*" (every signed-in user of the app) and "public" (anonymous visitors); they need no definition and no grantappId· string · requis
App id or slug (from list_apps / create_app)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "delete_app_role", "arguments": {"key": "texte", "appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_board≈ 176 tokens
Delete a board with every item on it. Destructive and not undoable, confirm with the user first, and prefer delete_column when only part of the model is wrong.
Paramètres, retour & exemple (2)
ParamètresboardId· string · requis
Board id (from list_boards / create_board)projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "delete_board", "arguments": {"boardId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_board_policy≈ 229 tokens
Remove a board's access policy. An endpoint of that board in rowLevelSecurity mode "policy" then has no policy to follow; check what it allows afterwards with explain_access before leaving it on a live app. Requires organization owner or admin.
Paramètres, retour & exemple (3)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)boardId· string · requis
Board id (from list_boards)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "delete_board_policy", "arguments": {"appId": "texte", "boardId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_column≈ 204 tokens
Delete a column and every value stored in it. Destructive, confirm with the user first. Use update_column when the column is right but its name, type or options are wrong.
Paramètres, retour & exemple (3)
ParamètresboardId· string · requis
Board id (from list_boards / create_board)columnId· string · requis
Column id (from get_board_schema)projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "delete_column", "arguments": {"boardId": "texte", "columnId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_comment≈ 198 tokens
Delete a comment from an item thread. Destructive, confirm with the user before calling. Needs projectId, itemId and the commentId.
Paramètres, retour & exemple (3)
ParamètresitemId· string · requis
Item id (from query_items / create_item)commentId· string · requis
Comment id (from list_comments / add_comment)projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "delete_comment", "arguments": {"itemId": "texte", "commentId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_item≈ 178 tokens
Delete an item. Destructive, confirm with the user before calling.
Paramètres, retour & exemple (3)
ParamètresitemId· string · requis
Item id (from query_items / create_item)boardId· string · requis
Board id (from list_boards / create_board)projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "delete_item", "arguments": {"itemId": "texte", "boardId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_project≈ 206 tokens
Delete a project with every board, column and row inside it. Destructive: confirm with the user first, and name the project in the confirmation. The project goes to the organization recycle bin, so it can be restored from the admin until it is emptied.
Paramètres, retour & exemple (2)
ParamètresprojectId· string · requis
Project id (from list_projects / create_project)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "delete_project", "arguments": {"projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - deploy_frontend≈ 805 tokens
Deploy a static frontend to TaskLite hosting and get a live URL https://{slug}.tasklite.dev (HTTPS, auto-published on first deploy, versions kept for rollback_deployment). Hand over the frontend in ONE of three ways: `files`, the files inline (path + content), the way to go from ChatGPT or any hosted client: write index.html and its assets, then deploy in the same turn; `zipUrl`, a public https URL of a zip (a Lovable/Bolt export, a GitHub release asset); `dir`, a build output folder on this machine (only when the MCP runs locally next to the files); `fromAppId`, a version already hosted in the same organization, copied on the server (start a new app from an existing site, or bring an old version back as a new one; get_deployment_files reads a version first). A real build that already exists on the person's machine fits none of these from a hosted server: tell them to drop the zip on the app's Versions screen (the adminUrl of the app, then Versions), which deploys the same way and keeps the same version history. In the frontend, call the app API via relative /api/{endpoint}, the hosting proxy injects the app identity, so no key ships to the browser.
Paramètres, retour & exemple (7)
Paramètresdir· string · optionnel
Local path to the BUILD OUTPUT directory (the one containing index.html), not the project root. Only where the MCP runs on the same machine as the filesappId· string · requis
App UUID or slug (app-xxxxxx), see list_appsfiles· array · optionnel
The site files inline. Must include index.html. Up to 500 files / 8MB decoded, right for a frontend written in the conversationzipUrl· string · optionnel
Public https URL of a zip of the BUILD OUTPUT (index.html at the root, or inside a single top-level folder). Up to 50MBfromAppId· string · optionnel
Deploy a version that is already hosted, copied on the server: another app in the same organization (start a new app from it), or this same app (bring an old version back as a new one). Nothing passes through the conversation, so any size worksfromVersion· integer · optionnel
With fromAppId: which version to copy (from list_deployments). Default: the live oneorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "deploy_frontend", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - explain_access≈ 334 tokens
Say what a user, or a list of roles, may do on a board under its policy: which rows they read and write, which columns, create and delete. Pass boardId and exactly one of userId (an app user from list_app_users; the answer includes the roles that person has) or roles (role keys, to try a role before anyone holds it). Changes nothing; use it after every set_board_policy. Requires organization owner or admin.
Paramètres, retour & exemple (5)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)roles· array · optionnel
Role keys to explain, e.g. ["agent"]. Pass this or userIduserId· string · optionnel
An app user's id (from list_app_users). Pass this or rolesboardId· string · requis
Board id (from list_boards)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "explain_access", "arguments": {"appId": "texte", "boardId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - export_project≈ 240 tokens
The whole project as JSON, boards, columns with settings, items with their cells keyed by column id. For migrations, backups and reading a system back. Items are capped per board for the model's sake; the REST endpoint GET /organizations/{orgId}/projects/{projectId}/export.json returns everything.
Paramètres, retour & exemple (3)
ParamètresprojectId· string · requis
Project id (from list_projects / create_project)organizationId· string · optionnel
Defaults to the credential organizationmaxItemsPerBoard· integer · optionnel
Default 200
Exemple d'appel{"name": "export_project", "arguments": {"projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - fetch≈ 222 tokens
One project, board or item in full, by the id search returned (project:<id>, board:<projectId>:<boardId>, item:<projectId>:<boardId>:<itemId>) or by an app URL path. Returns { id, title, text, url, metadata }, the ChatGPT fetch contract; text is the record as JSON.
Paramètres, retour & exemple (2)
Paramètresid· string · requis
An id from search, or an app URL path such as /projects/…/boards/…/items/…organizationId· string · optionnel
Only needed for project ids when the credential has no default organization; otherwise resolved automatically
Exemple d'appel{"name": "fetch", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_app_spec≈ 330 tokens
Get the machine-readable spec of an app: base URL, endpoints, methods, fields, auth. Two formats: "tasklite" (default), the compact shape the frontend prompts are built from, and "openapi", a standard OpenAPI 3.1 document for developers and other tools. When the user asks for the OpenAPI spec, or wants to hand the API to a developer, pass format "openapi". appId accepts either the app UUID or its slug (app-xxxxxx); list_apps shows both. The returned baseUrl is absolute, use it verbatim, do not rebuild it from the admin URL.
Paramètres, retour & exemple (3)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)format· string · optionnel · tasklite | openapi
"tasklite" (default): compact endpoint list. "openapi": OpenAPI 3.1 document, every endpoint with typed fields, filter grammar, auth and errorsorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "get_app_spec", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_board_policy≈ 224 tokens
Read a board's access policy: { boardId, policy, updatedAt, updatedBy }, policy null when the board has none. A policy only takes effect on endpoints whose rowLevelSecurity mode is "policy". Requires organization owner or admin.
Paramètres, retour & exemple (3)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)boardId· string · requis
Board id (from list_boards)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "get_board_policy", "arguments": {"appId": "texte", "boardId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_board_schema≈ 168 tokens
Get a board with its full column schema (ids, names, types, settings). Call this before creating items with cells.
Paramètres, retour & exemple (2)
ParamètresboardId· string · requis
Board id (from list_boards / create_board)projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "get_board_schema", "arguments": {"boardId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_cells≈ 242 tokens
Read cells of one item from the database (not a cache): one current value per column, the value set_cells_if_unchanged compares. Use it to decide a conditional write, and pass each value back as `expected` exactly as it came.
Paramètres, retour & exemple (4)
ParamètresitemId· string · requis
Item (row) idboardId· string · requis
Board id (from list_boards / create_board)columnIds· array · optionnel
Only these columns (default: every cell of the item)projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "get_cells", "arguments": {"itemId": "texte", "boardId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_deployment_files≈ 450 tokens
Read back what a hosted frontend version is made of: every file with its size and its URL on that version, and the full text of the text files (HTML, CSS, JS, JSON, SVG...). This is how a new conversation continues a site an earlier one built: "take my Krispool site and keep going" starts here, not from scratch. For a site written by hand the files ARE the source. For a bundled build (Vite, React) the JS is minified output: fine to inspect, not something to edit, so ask for the project's source instead. Images and other binaries come back as URLs only. Text is capped at 512KB per file and 4MB per call; narrow with `paths` for a big site. To start another app from this version, or bring an old version back as a new one, use deploy_frontend with fromAppId.
Paramètres, retour & exemple (5)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)paths· array · optionnel
Only these files, as listed by a previous call, e.g. ["index.html", "css/site.css"]version· integer · optionnel
Version to read (from list_deployments). Default: the live versionincludeContent· boolean · optionnel
false lists the files without their text, a cheap first look at a large site. Default trueorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "get_deployment_files", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_email_usage≈ 212 tokens
How much of the monthly email quota an organization has used: emails sent this month, emails waiting in the queue, the plan limit (Free 300, Plus 3000, Pro 20000; null means unlimited), whether the plan allows marketing email, and whether sending is paused for the organization (too many bounces or complaints). Covers email sent by automations, the communications endpoints and app servers (POST /apps/<slug>/api/_email/send).
Paramètres, retour & exemple (1)
ParamètresorganizationId· string · optionnel
Defaults to the credential organization
Exemple d'appel{"name": "get_email_usage", "arguments": {"organizationId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_frontend_prompt≈ 230 tokens
Get a ready-made prompt describing the app backend, for pasting into a frontend generator (v0/bolt/lovable/cursor). appId accepts the app UUID or its slug (app-xxxxxx), use list_apps to find it.
Paramètres, retour & exemple (3)
Paramètrestool· string · requis · v0 | bolt | lovable | cursor | claude-code
Target tool the prompt is written forappId· string · requis
App id or slug (from list_apps / create_app)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "get_frontend_prompt", "arguments": {"tool": "v0", "appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_item_history≈ 299 tokens
Read the change history of one item (row), newest first: who changed which field, from what to what, when, through which channel, with the event and reason when a named action made the change. Returns { items: [{ field, fieldId, from, to, at, actor: { userId, name }, channel, event, reason }], nextBefore }. Page backwards by passing nextBefore as `before`. Needs access to the item's board.
Paramètres, retour & exemple (4)
Paramètreslimit· integer · optionnel
Entries per page (server default when omitted)before· string · optionnel
The nextBefore of the previous page, to read older entriesitemId· string · requis
Item (row) id, from query_itemsorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "get_item_history", "arguments": {"itemId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_policy_identity≈ 199 tokens
Read the project's role identity: which board holds the people and how their rows map to roles (see set_policy_identity). Returns { identity }, null when none is set. Requires organization owner or admin.
Paramètres, retour & exemple (2)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "get_policy_identity", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - grant_app_role≈ 361 tokens
Give an app user a business role (a user can hold several). Takes the userId from list_app_users and a role key from list_app_roles. expiresAt makes the grant temporary. Granting the same pair again changes only expiresAt. This is for personal exceptions; for a whole team prefer set_policy_identity, which reads the roles from an employees board. Requires organization owner or admin.
Paramètres, retour & exemple (5)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)userId· string · requis
The user's id (userId from list_app_users), a UUIDroleKey· string · requis
Role key: a short stable id such as "manager" or "agent" (what policies name). Built-in keys: "*" (every signed-in user of the app) and "public" (anonymous visitors); they need no definition and no grantexpiresAt· string · optionnel
ISO 8601 date-time when the grant ends. Omit for no endorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "grant_app_role", "arguments": {"appId": "texte", "userId": "texte", "roleKey": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - link_app_user≈ 369 tokens
Link an existing user of an app to a row, so the user "is" that row for every endpoint in row-level security mode "relation": link a coach to his Coaches row and he reaches the trainees whose Coach column points at it. This is the manual form of what an invite code does at sign-up; use it for someone who already has an account (find the userId with list_app_users). A user may be linked to several rows, and linking the same pair again changes nothing. The user must already be a member of the app's organization (anyone who signed in to the app is) and the row must be a live row in that organization, otherwise 404. Requires organization owner or admin.
Paramètres, retour & exemple (4)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)itemId· string · requis
Id of the row that stands for this user (from query_items)userId· string · requis
The user's id (userId from list_app_users), a UUID; not their externalIdorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "link_app_user", "arguments": {"appId": "texte", "itemId": "texte", "userId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_app_endpoints≈ 192 tokens
List an app's REST endpoints, slug, board, allowed methods, and how many columns each exposes. An endpoint exposing 0 columns is broken: it returns only item metadata and silently discards writes.
Paramètres, retour & exemple (2)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "list_app_endpoints", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_app_invites≈ 232 tokens
List the invite codes of an app, newest first (the latest 200): the ones created with create_app_invite and the ones the app's own users minted through a relation endpoint with allowInvites (createdVia admin or app). Each carries id, code, itemId, role, label, maxUses, useCount, expiresAt, revokedAt and status: active, used (no uses left), expired or revoked.
Paramètres, retour & exemple (2)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "list_app_invites", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_app_role_grants≈ 255 tokens
List the role grants of an app's project, as { grants }: who holds which role and until when. Pass userId to see one person's. Roles that come from the employees board (set_policy_identity) are not grants and are not listed here; explain_access with a userId shows the roles a person ends up with. Requires organization owner or admin.
Paramètres, retour & exemple (3)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)userId· string · optionnel
Only this user's grants (userId from list_app_users)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "list_app_role_grants", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_app_roles≈ 212 tokens
List the business roles of an app's project, as { roles: [{ key, label }] }. Roles are what board policies (set_board_policy) name in their `roles` lists; they are separate from the app access role (viewer, editor, submitter) of add_app_user. Requires organization owner or admin.
Paramètres, retour & exemple (2)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "list_app_roles", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_app_user_links≈ 265 tokens
List the rows one user of an app is linked to, oldest first: each link has itemId, source (invite or admin) and createdAt. These are the rows the user "is" under row-level security mode "relation". A user can also stand for a row with no link at all, through identityPhoneColumn or identityEmailColumn; those matches are computed on every request and do not appear here.
Paramètres, retour & exemple (3)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)userId· string · requis
The user's id (userId from list_app_users), a UUIDorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "list_app_user_links", "arguments": {"appId": "texte", "userId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_app_users≈ 405 tokens
List the people of an app, as { users, pending }. users: everyone who ever called it with X-App-User or signed in to it with a code. Each has userId (the id set_app_user_role, remove_app_user, link_app_user, list_app_user_links and send_test_push take), externalId (the developer's own id for them, or null for a user who signed in by code), name, phone (the phone they proved with a code, or null), source (api or otp), role (viewer, editor or submitter), isActive, hasAccessRow, lastSeenAt and itemCount (rows they own on the app's boards). hasAccessRow says whether they are on the app's access list: when it is false, role and isActive are only defaults, and an endpoint in row-level security mode "shared" refuses them with 403 until add_app_user or set_app_user_role puts them on the list. pending: the phones add_app_user is still holding access for, each with id, phone, role, createdAt, expiresAt and status (pending, or expired); they get in on their first sign-in with a code. Use it to see who can use the app and to find the userId of a person.
Paramètres, retour & exemple (2)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "list_app_users", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_apps≈ 161 tokens
List the apps in the organization, id, slug, status. Call this first when you need an app id: the slug (app-xxxxxx) is what shows up in URLs and in generated code, and this is how you map it back to the app.
Paramètres, retour & exemple (1)
ParamètresorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "list_apps", "arguments": {"organizationId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_automations≈ 161 tokens
List the automations on a board, so you can see what already runs before adding another.
Paramètres, retour & exemple (2)
ParamètresboardId· string · requis
Board id (from list_boards / create_board)projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "list_automations", "arguments": {"boardId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_boards≈ 184 tokens
List the boards inside a project, id, name, description. Every other board tool needs a boardId, and this is the only way to discover one without being handed a URL.
Paramètres, retour & exemple (3)
Paramètrespage· number · optionnel
1-based; defaults to 1limit· number · optionnel
Defaults to 50projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "list_boards", "arguments": {"projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_comments≈ 227 tokens
List the comments (the correspondence thread) on an item, oldest first. Each comment includes its author and any @mentions. Needs projectId and itemId (get itemId from query_items).
Paramètres, retour & exemple (4)
Paramètrespage· integer · optionnel
1-based page, default 1limit· integer · optionnel
Page size, default 20itemId· string · requis
Item (row) idprojectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "list_comments", "arguments": {"itemId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_deployments≈ 168 tokens
List the hosted-frontend deployments of an app, versions, which one is live, and the public URL.
Paramètres, retour & exemple (2)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "list_deployments", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_organizations≈ 103 tokens
List the organizations the authenticated user belongs to. Use the returned id as organizationId in other tools.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_organizations", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_projects≈ 185 tokens
List projects in an organization. The API returns 50 per page, an organization with more than that needs page 2 and beyond, so check the returned total before assuming a project does not exist.
Paramètres, retour & exemple (3)
Paramètrespage· number · optionnel
1-based; defaults to 1limit· number · optionnel
Defaults to 50organizationId· string · optionnel
Defaults to the credential organization
Exemple d'appel{"name": "list_projects", "arguments": {"page": 1, "limit": 1, "organizationId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_uploaded_files≈ 220 tokens
The files attached to an item, including everything that came in through a request_file_upload link, each with a download URL that is signed and short lived (mint a fresh one by calling again). Also lists the upload links on the item and how many files each has taken, which is how to tell whether the person you asked has delivered.
Paramètres, retour & exemple (2)
ParamètresitemId· string · requis
Item (row) idorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "list_uploaded_files", "arguments": {"itemId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - publish_app≈ 157 tokens
Publish an app, required before its API endpoints accept external calls.
Paramètres, retour & exemple (2)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "publish_app", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - push_status≈ 205 tokens
Whether an app can send push notifications to phones, and how many devices are registered. Push goes out through the customer's OWN Firebase project, so it has to be configured once per app before send_push automations do anything. This tool never returns the key.
Paramètres, retour & exemple (2)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "push_status", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - query_items≈ 715 tokens
List items (rows) of a board, including their cell values. Returns all items unless limit/page are given (the API defaults to 50 per page when unpaged, so the tool pages through and concatenates). Narrow the result with search, status, priority and sort instead of fetching everything. This is the admin view; the REST endpoints of a published app take a fuller grammar, filter[column][gte], relation filters, per-field search, see get_app_spec.
Paramètres, retour & exemple (10)
Paramètrespage· integer · optionnel
1-based page, only with limitsort· string · optionnel
Sort by title, createdAt, updatedAt or status; prefix with "-" for descending, e.g. "-createdAt" for newest first. Anything else keeps the board orderlimit· integer · optionnel
Page size; omit to fetch all itemssearch· string · optionnel
Free text; matches the row title and its text cellsstatus· string · optionnel
Only rows whose status is one of these, comma separated. Matched against the board's status column by option value or label, case-insensitive: "todo,in_progress" on a task board, "Received,In Repair" on a data board whose status column lists those (get_board_schema shows the options). Needs a status column. A board with none (no column of type status) gets an error that lists its dropdown columns, instead of unfiltered rows. A board whose status is a dropdown named status/סטטוס/מצב is filtered here on that dropdown, after fetching, so an explicit limit can give a page with fewer rows (the answer says so)boardId· string · requis
Board id (from list_boards / create_board)archived· string · optionnel · active | archived | all
Which rows to include. Default activepriority· string · optionnel
Only rows with one of these priorities, comma separated (task boards only)projectId· string · requis
Project id (from list_projects / create_project)excludeStatus· string · optionnel
Only rows whose status is NOT one of these, comma separated, resolved like status. The way to ask for everything that is not done: excludeStatus "done" (task board) or "Completed" (a data board with that option). Rows with no status at all are kept. A board without a status column is handled as for status: an error, or a filter here on a dropdown named status/סטטוס/מצב
Exemple d'appel{"name": "query_items", "arguments": {"boardId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - remove_app_user≈ 349 tokens
Take a person's access to an app away. Pass exactly one of two ids from list_app_users: userId, for someone who already signed in, switches them off (the same as set_app_user_role with isActive false: their calls are refused in every mode, nothing of theirs is deleted, and set_app_user_role or add_app_user switches them back on); pendingId, for a phone that add_app_user is still holding access for, cancels it, so that phone's first sign-in opens nothing. Requires organization owner or admin (an editor gets 403).
Paramètres, retour & exemple (4)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)userId· string · optionnel
The user's id (userId from list_app_users), a UUID. Pass this or pendingIdpendingId· string · optionnel
Id of a waiting phone (id in the pending list of list_app_users, or pendingId from add_app_user), a UUID. Pass this or userIdorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "remove_app_user", "arguments": {"appId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - reorder_columns≈ 208 tokens
Set the display order of a board's columns. Pass every column id in the wanted order (get_board_schema lists them).
Paramètres, retour & exemple (3)
ParamètresboardId· string · requis
Board id (from list_boards / create_board)columnIds· array · requis
Column ids in the new order (every column of the board)projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "reorder_columns", "arguments": {"boardId": "texte", "columnIds": [], "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - request_file_upload≈ 522 tokens
Create a link that puts files onto an item from outside TaskLite: the customer's photos, a signed contract, a logo, a build zip. Returns an address like https://app.tasklite.net/upload/<token> that anyone you hand it to can use with no account, no login and no API key; pass clientEmail and TaskLite emails the link for you. What arrives lands as attachments on that item, and list_uploaded_files reads them back with a download URL. This is the answer when the person has the file and the model does not: a hosted client cannot read a folder on someone's machine. The link is public for as long as it lasts, so keep expiryDays short and maxFiles tight, and revoke_upload_link when the material is in.
Paramètres, retour & exemple (8)
ParamètresitemId· string · requis
Item (row) the files belong to, from query_items / create_item. Make the row first if the material has no home yetmessage· string · optionnel
What to upload, in the words the recipient will read: "the four room photos and the price list"maxFiles· integer · optionnel
How many files the link accepts before it stops. Default 10clientName· string · optionnel
Who is being asked, shown on the upload pageexpiryDays· integer · optionnel
How long the link lives. Default 7 daysclientEmail· string · optionnel
Send the link to this address. Omit to get the link back and pass it on yourselfclientPhone· string · optionnel
Recorded with the requestorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "request_file_upload", "arguments": {"itemId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - revoke_app_invite≈ 254 tokens
Revoke an invite code so nobody else can sign up with it. People who already used it stay linked to their row and keep their access; to cut one of them off use unlink_app_user. Cannot be undone, create a new invite instead. Requires organization owner or admin. Get the invite id (not the code) from list_app_invites.
Paramètres, retour & exemple (3)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)inviteId· string · requis
Invite id, the id field from list_app_invites (a UUID, not the code)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "revoke_app_invite", "arguments": {"appId": "texte", "inviteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - revoke_app_role≈ 311 tokens
Take a business role away from an app user (a grant made with grant_app_role). A role the user gets from the employees board (set_policy_identity) is not a grant: change the board row instead. Revoking a grant that does not exist also succeeds. Requires organization owner or admin.
Paramètres, retour & exemple (4)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)userId· string · requis
The user's id (userId from list_app_users), a UUIDroleKey· string · requis
Role key: a short stable id such as "manager" or "agent" (what policies name). Built-in keys: "*" (every signed-in user of the app) and "public" (anonymous visitors); they need no definition and no grantorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "revoke_app_role", "arguments": {"appId": "texte", "userId": "texte", "roleKey": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - revoke_upload_link≈ 200 tokens
Close an upload link before it expires, so the address stops accepting files. The files already uploaded stay on the item. Use it as soon as the material is in, because until then anyone holding the link can add more.
Paramètres, retour & exemple (2)
ParamètrestokenId· string · requis
Link id (the tokenId from request_file_upload)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "revoke_upload_link", "arguments": {"tokenId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - rollback_deployment≈ 205 tokens
Point the live URL back at a previous deployment version (see list_deployments for available versions).
Paramètres, retour & exemple (3)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)version· integer · requis
Deployment version number (from list_deployments)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "rollback_deployment", "arguments": {"appId": "texte", "version": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - search≈ 233 tokens
Full-text search across the projects, boards and items of the organization. Returns { results: [{ id, title, url }] }, the shape ChatGPT connectors and deep research expect; pass a result id to fetch for the full record. When you already know the board, query_items is cheaper and complete.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
Max results, default 20query· string · requis
Search textprojectId· string · optionnel
Limit the search to one project
Exemple d'appel{"name": "search", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - send_test_push≈ 261 tokens
Send one real push notification to the given app users, to prove the chain works before an automation depends on it. Confirm with the user first: this reaches actual phones.
Paramètres, retour & exemple (5)
Paramètresbody· string · optionnel
Notification bodyappId· string · requis
App id or slug (from list_apps / create_app)title· string · optionnel
Notification title; defaults to "TaskLite"userIds· array · requis
App user ids to notify (the same ids row-level security uses)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "send_test_push", "arguments": {"appId": "texte", "userIds": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - set_app_user_role≈ 439 tokens
Change what an existing user of an app may do, or switch them off or back on. Takes the userId from list_app_users and at least one of role and isActive. It also puts on the app's access list a user who is not on it yet (hasAccessRow false in list_app_users), which is what an endpoint in row-level security mode "shared" checks: use it for someone who already signed in and is refused with 403. isActive false switches the user off in every mode: their calls are refused until it is set back to true; nothing of theirs is deleted. For a person who has not signed in yet there is no userId: use add_app_user with their phone. Requires organization owner or admin (an editor gets 403).
Paramètres, retour & exemple (5)
Paramètresrole· string · optionnel · viewer | editor | submitter
App-level access role: editor (reads and writes), viewer (reads), submitter (creates). Omit to keep the current oneappId· string · requis
App id or slug (from list_apps / create_app)userId· string · requis
The user's id (userId from list_app_users), a UUID; not their externalIdisActive· boolean · optionnel
false switches the user off, true switches them back on. Omit to keep the current stateorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "set_app_user_role", "arguments": {"appId": "texte", "userId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - set_board_policy≈ 1800 tokens
Set who may read, write, create and delete rows of a board, and which columns, as a JSON document (a FULL REPLACE of the board's policy; read get_board_policy first to change part of one). It is enforced on the app's endpoints of this board whose rowLevelSecurity.mode is "policy" (create_app_endpoint / update_app_endpoint). Organization owners, admins and editors using the app are let through unless internalBypass is false. Fields: - schemaVersion: 1 (required). - internalBypass: default true. - rows.read / rows.write: a list of { roles, scope }. scope is "all", { "mine": "<column id>" } (rows whose column points at the caller: a relation to the row that stands for them, their verified phone or email, or a people column; add "via": "<relation column id>" for one more hop), { "created": true } (rows they created through the app) or { "where": CONDITION } (rows a condition selects, e.g. open cases older than 3 days, for an escalation view). A user gets the union of the rules that name any of their roles; no rule for their roles means no access. - rows.create / rows.delete: plain role lists. - columns: { "<column id or reserved field>": { "read": ACCESS, "write": ACCESS } }. ACCESS is a role list, or { "roles": [...], "orMine": "<column id>" } (these roles, or anyone for whom the row is theirs by that column). A column without an entry follows the row rules. An EMPTY list ("write": []) locks the column for everyone through the app: use it for assignedTo and for any field only an admin or an action may change. Reserved fields are title, description, status, priority, dueDate and assignedTo, addressed by those names. Reserved fields are open to anyone who may write the row unless you lock them, so lock assignedTo. - CONDITION (in where, rules.when): { "all": [c...] } | { "any": [c...] } | { "not": c } | a leaf { "col": "<column id or reserved field>", "op": OP, ... }. OP: eq / neq (with "value"), in (value is a list), empty, notEmpty, isMe (the column points at the caller; optional "via"), olderThan (col is updatedAt, createdAt or a date column; give "hours" or "days"), changed (this write sets col; only in rules). No free expressions. - rules: [{ "id", "when": CONDITION, "deny": { "write": "*" | [column ids], "except": [roles] }, "require": [column ids that must be filled after the write], "except": [roles], "message" }]. deny is judged on the row as it is BEFORE the write, require AFTER it. Rules bind people acting through the app; internal bypass users and an action's own columns are not held to deny. - actions: { "<name>": { "roles": [...], "input": { "<input name>": { "col": "<column id the value is written to>", "required": true } }, "set": { "<column id>": constant }, "event": "TRANSFER", "scope": "write" | "read", "approval": "<approval workflow id of the board>" } }. An action is role-gated, validates its input (an input without col is only data; "reason" is always accepted and goes to the history), writes its set and bound inputs in one transaction, and records event and reason in the history. It is the only way to change a column whose write is []. With approval it files a request for that workflow instead of writing; the write happens when the last step approves. Roles named by approval steps must exist (define_app_role). Actions run through the App API only (see below). Frontends run an action with POST /apps/<slug>/api/<endpoint>/<itemId>/actions/<name> and the inputs as the body; approvers read GET /apps/<slug>/api/me/approvals and answer POST /apps/<slug>/api/approvals/<requestId>/decide { "decision": "approve" | "reject", "comment"? }; GET /apps/<slug>/api/me/permissions lists the actions the caller may run as [{ name, allowed, roles, inputs, approval, event, scope }]. There is no MCP tool that runs an action. Roles are keys from list_app_roles, plus "*" (any signed-in user) and "public". Column ids come from get_board_schema. An invalid document is refused with POLICY_INVALID and an errors list naming each problem. Example (agents see and edit only their own cases, the manager sees and edits all, bookkeeping reads all, commission is visible to the owner, the manager and to the agent on his own rows): { "schemaVersion": 1, "rows": { "read": [ { "roles": ["owner","manager","bookkeeping"], "scope": "all" }, { "roles": ["agent"], "scope": { "mine": "<agent column id>" } } ], "write": [ { "roles": ["owner","manager"], "scope": "all" }, { "roles": ["agent"], "scope": { "mine": "<agent column id>" } } ], "create": ["owner","manager","agent"], "delete": ["owner"] }, "columns": { "<commission column id>": { "read": { "roles": ["owner","manager"], "orMine": "<agent column id>" }, "write": ["owner"] }, "<agent column id>": { "write": ["owner","manager"] }, "assignedTo": { "write": [] } }, "rules": [ { "id": "lock", "when": { "all": [ { "col": "<locked column id>", "op": "eq", "value": true } ] }, "deny": { "write": "*", "except": ["owner","manager"] }, "message": "The case is locked to its agent" } ], "actions": { "transfer": { "roles": ["owner","manager"], "input": { "agent": { "col": "<agent column id>", "required": true }, "reason": { "required": true } }, "set": { "<locked column id>": false }, "event": "TRANSFER" }, "unlock": { "roles": ["owner","manager"], "input": { "reason": { "required": true } }, "set": { "<locked column id>": false }, "event": "UNLOCK" }, "exception": { "roles": ["agent"], "input": { "reason": { "required": true } }, "set": { "<exception column id>": true }, "approval": "<workflow id, a role step>" } } } (The Achituv shape: a locked case cannot be edited except by the owner and the manager; transfer and unlock are the only way to change the agent or the lock, with a recorded reason; an exception asks a role step for approval.) Test it with explain_access and simulate_request before telling the user it is done. Requires organization owner or admin.
Paramètres, retour & exemple (4)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)policy· object · requis
The policy document as an object (not a string), e.g. { "schemaVersion": 1, "rows": { ... } }boardId· string · requis
Board id (from list_boards)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "set_board_policy", "arguments": {"appId": "texte", "policy": {}, "boardId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - set_cell≈ 256 tokens
Set a single cell value on an item by columnId.
Paramètres, retour & exemple (5)
Paramètresvalue· ? · requis
The new cell value; shape depends on the column typeitemId· string · requis
Item (row) idboardId· string · requis
Board id (from list_boards / create_board)columnId· string · requis
Column id (from get_board_schema)projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "set_cell", "arguments": {"value": "texte", "itemId": "texte", "boardId": "texte", "columnId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - set_cells_if_unchanged≈ 576 tokens
Compare-and-set on cells of one item, all or none. Each cell carries the value you read (`expected`, null = empty) and the value to write. If any cell no longer holds its `expected`, nothing is written and the answer is an error with code CELL_CONFLICT and `conflicts` [{columnId, current}]: read again (use `current`), decide again, and never resend the same call. CELL_BUSY (the row is being written) also writes nothing: read again, then retry. Plain columns only (not relation, file, lookup, rollup, formula, button or system columns). Use set_cell for a write that needs no precondition.
Paramètres, retour & exemple (4)
Paramètrescells· array · requis
1 to 50 cells of this item, each column onceitemId· string · requis
Item (row) idboardId· string · requis
Board id (from list_boards / create_board)projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "set_cells_if_unchanged", "arguments": {"cells": [], "itemId": "texte", "boardId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - set_policy_identity≈ 587 tokens
Derive "who is this user and what is their role" from the data, instead of a grant per person: point at the employees board, its phone/email column, the column that says what each person does, and a map from that column's values to role keys. A signed-in user whose verified phone (or email) is in a row of that board gets that row's roles; a row that is not active gives none. Full replace. Example: { "board": "<Employees board id>", "phoneColumn": "<Phone column id>", "roleColumn": "<Position column id>", "roleMap": { "Agent": ["agent"], "Agents manager": ["manager"], "Owner": ["owner"] }, "activeColumn": "<Status column id>", "activeValues": ["Active"] }. Board and columns are ids (get_board_schema). A grant (grant_app_role) adds to what the board gives. Requires organization owner or admin.
Paramètres, retour & exemple (3)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)identity· object · requisorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "set_policy_identity", "arguments": {"appId": "texte", "identity": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - simulate_request≈ 436 tokens
Dry-run one app API request in the name of a user and get the verdict (allowed or refused, and why), changing nothing: the endpoint slug, the HTTP method (or the name of a policy action, with its itemId) and optionally the column keys the body would carry. Use it to prove that a forbidden thing is refused (an agent PATCHing assignedTo, reading another agent's row) and an allowed one passes. Requires organization owner or admin.
Paramètres, retour & exemple (8)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)action· string · optionnel
Name of a policy action to try on itemId (needs itemId) instead of a plain methoditemId· string · optionnel
The row the request is about (PATCH, DELETE, single GET)method· string · optionnel · GET | POST | PATCH | PUT | DELETE
HTTP method of the request. Pass this or actionuserId· string · requis
The app user the request is made as (from list_app_users)bodyKeys· array · optionnel
Field or column keys the request body would writeendpoint· string · requis
Endpoint slug (from list_app_endpoints)organizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "simulate_request", "arguments": {"appId": "texte", "userId": "texte", "endpoint": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - unlink_app_user≈ 320 tokens
Remove the link between a user of an app and a row: the user stops being that row, and at once loses the rows of every relation endpoint they reached through it. The account, the row and the user's app access are not touched, and nothing is deleted. A user matched to the row by identityPhoneColumn or identityEmailColumn still reaches it; change the phone or email in the row to end that. Requires organization owner or admin. Removing a link that does not exist also answers success.
Paramètres, retour & exemple (4)
ParamètresappId· string · requis
App id or slug (from list_apps / create_app)itemId· string · requis
Id of the linked row (itemId from list_app_user_links)userId· string · requis
The user's id (userId from list_app_users), a UUIDorganizationId· string · optionnel
Organization id; defaults to the credential organization when omitted
Exemple d'appel{"name": "unlink_app_user", "arguments": {"appId": "texte", "itemId": "texte", "userId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_app_endpoint≈ 2075 tokens
Change an existing endpoint, most often to set exposedColumns on one that was created without them. Get the endpoint id from list_app_endpoints and the column ids from get_board_schema.
Paramètres, retour & exemple (9)
Paramètresname· string · optionnel
Human-readable nameslug· string · optionnel
URL slug: lowercase letters, digits and dashesappId· string · requis
App id or slug (from list_apps / create_app)isActive· boolean · optionnel
Whether it is activeendpointId· string · requis
Endpoint id (from list_app_endpoints)allowedMethods· array · optionnel
HTTP methods the endpoint accepts: GET, POST, PATCH, DELETEexposedColumns· array · optionnel
Replacement list of exposed columns (same shape as create_app_endpoint)organizationId· string · optionnel
Organization id; defaults to the credential organization when omittedrowLevelSecurity· ? · optionnel
Replacement row-level security (same shape as create_app_endpoint); null turns it off. The object replaces the stored one whole, it is not merged: to change one field, read the current value with list_app_endpoints and send every field again (enabled, mode and the columns of that mode), or the ones left out are lost
Exemple d'appel{"name": "update_app_endpoint", "arguments": {"appId": "texte", "endpointId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_automation≈ 630 tokens
Change an existing automation: its actions, conditions, trigger config or name, or switch it off with isActive false. Fields left out stay as they are; actions and conditions, when given, replace the whole list. Use it to fix an automation instead of creating a second one next to it. Get the id from list_automations. For send_email actions, config.kind is transactional (default) or marketing (Pro plan or higher, verified sender domain, unsubscribe footer) and config.attachments is an array of file column ids on the row; see create_automation.
Paramètres, retour & exemple (8)
Paramètresname· string · optionnel
New nameactions· array · optionnel
The full new list of actions (replaces the old one)boardId· string · requis
Board id the automation belongs toisActive· boolean · optionnel
false switches it off, true onprojectId· string · requis
Project id (from list_projects / create_project)conditions· array · optionnel
Run only for rows that match, e.g. [{ field: "<column id>", operator: "equals", value: "New seller" }]automationId· string · requis
Automation id (from list_automations)triggerConfig· object · optionnel
New trigger config, same shape as in create_automation (scheduled: { intervalHours, runAtHour in UTC }, no cron)
Exemple d'appel{"name": "update_automation", "arguments": {"boardId": "texte", "projectId": "texte", "automationId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_board≈ 204 tokens
Rename a board or change its description. Structure (columns) is changed with update_column / delete_column / reorder_columns.
Paramètres, retour & exemple (4)
Paramètresname· string · optionnel
Human-readable nameboardId· string · requis
Board id (from list_boards / create_board)projectId· string · requis
Project id (from list_projects / create_project)description· string · optionnel
Free-text description
Exemple d'appel{"name": "update_board", "arguments": {"boardId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_column≈ 422 tokens
Change a column after the fact: rename it, change its type (e.g. number -> currency), replace settings (dropdown options), or set isRequired / isHidden. A type change converts existing values (number↔currency, text→number/date/checkbox, anything→text) and clears the ones that cannot convert; the response carries conversion: { converted, cleared }. settings.validation rules apply here too.
Paramètres, retour & exemple (10)
Paramètresname· string · optionnel
Human-readable nametype· string · optionnel
New column type (same list as create_column)force· boolean · optionnel
Skip the name/type sanity checkboardId· string · requis
Board id (from list_boards / create_board)columnId· string · requis
Column id (from get_board_schema)isHidden· boolean · optionnel
Hide the column in the TaskLite UIsettings· object · optionnel
Replaces the column settings, e.g. { options: [...] } for dropdown/statusprojectId· string · requis
Project id (from list_projects / create_project)isRequired· boolean · optionnel
Require a non-blank value on every App API createdescription· string · optionnel
Free-text description
Exemple d'appel{"name": "update_column", "arguments": {"boardId": "texte", "columnId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_comment≈ 204 tokens
Edit the text of an existing comment. Only the author can edit their comment. Needs projectId, itemId and the commentId.
Paramètres, retour & exemple (4)
ParamètresitemId· string · requis
Item (row) idcontent· string · requis
The new comment textcommentId· string · requis
Comment id (from list_comments)projectId· string · requis
Project id (from list_projects / create_project)
Exemple d'appel{"name": "update_comment", "arguments": {"itemId": "texte", "content": "texte", "commentId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_item≈ 388 tokens
Update item fields (title, description, status, priority, dueDate, tags). On a data board the task fields (status, priority, dueDate, tags) are hidden: its columns, status included, are set with set_cell.
Paramètres, retour & exemple (9)
Paramètrestags· array · optionnel
Tags as an array of stringstitle· string · optionnel
Item title, shown as the row nameitemId· string · requis
Item (row) idstatus· string · optionnel
Task status of the row on a task board: todo, in_progress, review or done. Refused on a data board, where it would only write a hidden task field: set that board's status column with cells (create_item) or set_cell (update_item) insteadboardId· string · requis
Board id (from list_boards / create_board)dueDate· string · optionnel
Due date, ISO 8601 (YYYY-MM-DD or full timestamp)priority· string · optionnel
Priority: low, medium, high or urgentprojectId· string · requis
Project id (from list_projects / create_project)description· string · optionnel
Free-text description
Exemple d'appel{"name": "update_item", "arguments": {"itemId": "texte", "boardId": "texte", "projectId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».