accueil / serveurs / Géo & Temps / ai.timix/time-tracking
ai.timix/time-tracking
serveur MCP (Model Context Protocol) · timix-mcp 1.0.0
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 ai.timix/time-tracking est sûr ?
Au dernier audit MCP Hub, le serveur MCP « ai.timix/time-tracking » 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 114 outils
- approve_timesheet≈ 212 tokens
Approve a submitted timesheet period for a team member. The period and its time reports transition to Approved. Use confirm=true to proceed. Requires Manager or Admin/Owner role (Finance is excluded — timesheet approval is PM work, not finance).
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.submission_period_id· string · requis
Id of the submission period to approve (from get_pending_approvals or list_approval_history).
Exemple d'appel{"name": "approve_timesheet", "arguments": {"submission_period_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - assign_user_to_customer≈ 236 tokens
Assign an organization member to a billing customer so they can see that customer and all its projects. Requires the org_user_id (discover it with get_project_team or get_employee_timesheet) and the customer_id. The organization is fixed by your context — never pass an organization id. You cannot target a user more privileged than yourself (Owner is not targetable by Admin).
Paramètres, retour & exemple (3)
Paramètrescustomer_id· string · requis
Id of the customer to assign the user to.org_user_id· string · requis
Id of the OrganizationUser to assign (not the Firebase user id — use get_project_team to discover it).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "assign_user_to_customer", "arguments": {"customer_id": "texte", "org_user_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - assign_user_to_project≈ 242 tokens
Assign a member to a project so they can see it and log time against its tasks. Identify the member by email (preferred) or by org_user_id, and the project by project_id (discover ids with find_billing_work - never ask the user for an id). The organization is fixed by your context.
Paramètres, retour & exemple (4)
Paramètresemail· string · optionnel
Email of the member to assign (preferred). Provide this OR org_user_id.project_id· string · requis
Id of the project to assign the member to (required). Must be a project in your organization.org_user_id· string · optionnel
Organization-user id of the member to assign. Provide this OR email.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "assign_user_to_project", "arguments": {"project_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - bulk_create_time_reports≈ 445 tokens
Create multiple time entries in one call. Supply an 'entries' array where each item has subtask_id, date (YYYY-MM-DD), and hours (> 0 and ≤ 24); optionally start_time (HH:mm; when omitted, the entry goes after your last entry that day and after the batch's other entries — 09:00 on a day with nothing logged) and text. Entries are always attributed to you. Returns per-item results (partial failures are reported rather than aborting the batch). Max 50 entries.
Paramètres, retour & exemple (2)
Paramètresentries· array · requis
List of time entries to create (max 50).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "bulk_create_time_reports", "arguments": {"entries": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - bulk_update_cost_rates≈ 270 tokens
Apply an organization-wide adjustment to every member's hourly COST rate, effective from a date. Supply EITHER adjustment_percentage (e.g. 5 to raise all rates by 5%, -3 to cut 3%) OR fixed_amount (set every rate to this exact amount), not both. The organization is fixed by your context - never pass an organization id. Rate values are never echoed back.
Paramètres, retour & exemple (4)
Paramètresfixed_amount· number · optionnel
Set every rate to this exact amount. Provide this OR adjustment_percentage, not both.effective_from· string · requis
Date the adjusted rates take effect (YYYY-MM-DD) (required).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.adjustment_percentage· number · optionnel
Percentage to adjust every rate by (e.g. 5 = +5%, -3 = -3%). Provide this OR fixed_amount, not both.
Exemple d'appel{"name": "bulk_update_cost_rates", "arguments": {"effective_from": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - bulk_update_time_reports≈ 194 tokens
Apply a common text description update to multiple of your own time entries. Supply ids (list of time-report ids, max 100) and text (the new description). Returns per-id results — partial failures are reported rather than aborting the whole batch.
Paramètres, retour & exemple (3)
Paramètresids· array · requis
Ids of the time entries to update (max 100).text· string · requis
New description to apply to all entries (max 1000 characters).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "bulk_update_time_reports", "arguments": {"ids": [], "text": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cancel_invite≈ 170 tokens
Cancel a pending invitation so the invite link is no longer valid. The email address can be re-invited at any time. Returns a preview unless confirm=true is set.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.invite_id· string · requis
Id of the pending invitation to cancel.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "cancel_invite", "arguments": {"invite_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cancel_scheduled_report≈ 150 tokens
Permanently delete a scheduled report definition. Requires confirm=true to proceed.
Paramètres, retour & exemple (3)
Paramètresid· string · requis
Id of the scheduled report to delete.confirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "cancel_scheduled_report", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cancel_timer≈ 94 tokens
Cancel (discard) your running timer without creating a time entry. The elapsed time is lost. No arguments needed.
Paramètres, retour & exemple (1)
Paramètresidempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "cancel_timer", "arguments": {"idempotency_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - change_user_role≈ 232 tokens
Change an organization member's role. Returns a preview; re-call with the confirm_token and an idempotency_key to commit. Cannot assign the Owner role. Cannot escalate beyond your own role.
Paramètres, retour & exemple (4)
Paramètresnew_role· string · requis
New role to assign: Admin, Finance, Manager, Member, or Viewer.org_user_id· string · requis
Id of the OrganizationUser record to update (not the Firebase userId).confirm_token· string · optionnel
Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes.idempotency_key· string · optionnel
Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "change_user_role", "arguments": {"new_role": "texte", "org_user_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - check_budget_limits≈ 117 tokens
Check whether logging additional hours on a subtask would exceed its budget limits. Returns whether the budget is exceeded and a message.
Paramètres, retour & exemple (2)
Paramètressub_task_id· string · requis
Id of the subtask to check.additional_hours· number · requis
Hours to check against the budget limit.
Exemple d'appel{"name": "check_budget_limits", "arguments": {"sub_task_id": "texte", "additional_hours": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - close_frame_order≈ 177 tokens
Close an Open frame order so no new invoices may link to it. Returns a preview unless confirm=true is set. Closing is not directly reversible; the order remains in the Closed state.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.frame_order_id· string · requis
Id of the frame order to close.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "close_frame_order", "arguments": {"frame_order_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - close_month≈ 221 tokens
Close a billing month so no further time can be logged or edited in it. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. Reversible only by reopening the month.
Paramètres, retour & exemple (4)
Paramètresyear· integer · requis
Calendar year of the month to close (e.g. 2026).month· integer · requis
Calendar month to close (1-12).confirm_token· string · optionnel
Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes.idempotency_key· string · optionnel
Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "close_month", "arguments": {"year": 1, "month": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - commit_import≈ 145 tokens
Commit a bulk-import CSV, creating the work hierarchy (customers, projects, tasks, subtasks) in the organization. Call validate_import first to verify the file.
Paramètres, retour & exemple (2)
Paramètrescsv_content· string · requis
The CSV content to import. Must pass validate_import with no errors first.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "commit_import", "arguments": {"csv_content": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - copy_period≈ 261 tokens
Copy your own time entries from a source date range into a target date range, preserving each entry's weekday offset relative to the source start (e.g. copy last week to this week). New entries are created as Draft. The source range cannot exceed 31 days. Supply source_start_date, source_end_date, and target_start_date (all ISO 8601 YYYY-MM-DD).
Paramètres, retour & exemple (4)
Paramètresidempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.source_end_date· string · requis
Inclusive end of the range to copy FROM (YYYY-MM-DD).source_start_date· string · requis
Inclusive start of the range to copy FROM (YYYY-MM-DD).target_start_date· string · requis
The first date of the target range (source_start_date maps here, YYYY-MM-DD).
Exemple d'appel{"name": "copy_period", "arguments": {"source_end_date": "texte", "source_start_date": "texte", "target_start_date": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_credit_note≈ 217 tokens
Create a credit note against an existing invoice, reducing the amount owed. Requires Finance role or above.
Paramètres, retour & exemple (5)
Paramètresreason· string · requis
Reason for the credit note (required).confirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.invoice_id· string · requis
ID of the invoice to credit (required).credit_amount· number · requis
Total credit amount (required, must be > 0 and ≤ invoice total).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "create_credit_note", "arguments": {"reason": "texte", "invoice_id": "texte", "credit_amount": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_custom_field≈ 440 tokens
Define a new custom field on a billing entity type (project, task, subtask, time report, or customer) for your organization. The organization is fixed by your context - never pass an organization id. type is one of String, Number, Date, DateTime, ListOfValues; ListOfValues requires at least one option. Marking a field mandatory blocks creating that entity type until a value is provided.
Paramètres, retour & exemple (7)
Paramètrestype· string · requis · String | Number | Date | DateTime | ListOfValues
Field data type (required). One of: String, Number, Date, DateTime, ListOfValues.title· string · requis
Human-readable label shown in the UI (required).entity· string · requis · billing_projects | billing_tasks | billing_sub_tasks | sub_tasks_time_reports | billing_customers
The entity type this field is defined on (required). One of: billing_projects, billing_tasks, billing_sub_tasks, sub_tasks_time_reports, billing_customers.field_id· string · requis
A unique, stable key for the field (required, max 50 chars), e.g. "po_number".is_mandatory· boolean · optionnel
Whether a value is required when creating/updating the entity. Defaults to false.list_of_values· array · optionnel
Options for a ListOfValues field (required for that type; at least one non-blank option).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "create_custom_field", "arguments": {"type": "String", "title": "texte", "entity": "billing_projects", "field_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_customer≈ 224 tokens
Create a new billing customer in your organization. The organization is fixed by your context - never pass an organization id.
Paramètres, retour & exemple (6)
Paramètresname· string · requis
Customer name (required).country· string · optionnel
Optional country.currency· string · optionnel
Optional ISO 4217 currency code (e.g. USD, EUR). Defaults to the organization's base currency.description· string · optionnel
Optional customer description (max 200 characters).contact_email· string · optionnel
Optional primary contact email address.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "create_customer", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_favorite≈ 226 tokens
Save a time-entry combination as a favorite for quick reuse. Returns the created favorite.
Paramètres, retour & exemple (7)
Paramètrestask_id· string · requis
Task id.project_id· string · requis
Project id.customer_id· string · requis
Customer id.description· string · optionnel
Default time-entry description (optional).sub_task_id· string · requis
Subtask id.display_name· string · requis
Short label for the favorite (e.g. 'Daily standup on Acme').idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "create_favorite", "arguments": {"task_id": "texte", "project_id": "texte", "customer_id": "texte", "sub_task_id": "texte", "display_name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_frame_order≈ 379 tokens
Create a new Open frame order (blanket PO / commercial envelope) for a customer. A frame order tracks a contracted hours or amount cap that invoices can draw down against. Reversible — the frame order can be deleted while it is still Open.
Paramètres, retour & exemple (10)
Paramètresnotes· string · optionnel
Optional free-text notes (max 2000 chars).currency· string · optionnel
ISO 4217 currency code (e.g. USD). Defaults to the customer's currency when omitted.end_date· string · optionnel
Optional end date in YYYY-MM-DD format (must be >= start_date).reference· string · requis
Unique reference string per (org, customer), e.g. 'PO-2026-001'. Max 100 chars.start_date· string · optionnel
Optional start date in YYYY-MM-DD format.customer_id· string · requis
Id of the customer this frame order belongs to.description· string · optionnel
Optional human-readable description (max 500 chars).total_hours· number · optionnel
Optional contracted hours cap (must be > 0).total_amount· number · optionnel
Optional contracted amount cap (must be > 0).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "create_frame_order", "arguments": {"reference": "texte", "customer_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_holiday_profile≈ 502 tokens
Create and SAVE a national-holiday profile for the organization for a specific year, AFTER the user has explicitly reviewed and confirmed the holiday list. Each holiday is either a full day off or a half/partial working day (with a start/end working window). Holiday dates MUST come from suggest_holiday_profile or the user — never invent dates. Only call this once the user has confirmed; do not call it to preview.
Paramètres, retour & exemple (7)
Paramètresname· string · requis
A descriptive profile name, e.g. "US Holidays 2026" or "Israel 2026".year· integer · requis
The calendar year this profile governs (e.g. 2026). It applies only to its year.notes· string · optionnel
Optional free-text notes about this profile.source· string · optionnel
Provenance of the dates: "hebcal", "nager", "manual", or "ai". Use the source returned by suggest_holiday_profile.holidays· string · requis
A JSON array (as a string) of the confirmed holidays, each an object: {"date":"YYYY-MM-DD","name":"...","full_day_off":true|false,"window_start":"HH:mm","window_end":"HH:mm"}. Dates must be within the profile's year. full_day_off=false means a half/partial working day — include window_start/window_end; otherwise omit them. Example: [{"date":"2026-01-01","name":"New Year's Day","full_day_off":true},{"date":"2026-04-01","name":"Erev Pesach","full_day_off":false,"window_start":"08:00","window_end":"13:00"}]set_as_default· boolean · optionnel
Optional. Set this profile as the organization's default holiday set for its year.default_for_countries· string · optionnel
Optional comma-separated ISO-2 country codes this profile is the country-default for (for its year), e.g. "US" or "US,CA".
Exemple d'appel{"name": "create_holiday_profile", "arguments": {"name": "texte", "year": 1, "holidays": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_project≈ 325 tokens
Create a new billing project under one of your customers. The organization is fixed by your context; customer_id must be a customer in your organization. Discover ids with find_billing_work - never ask the user for an id.
Paramètres, retour & exemple (6)
Paramètresname· string · requis
Project name (required).customer_id· string · requis
Id of the customer this project belongs to (required). Must be a customer in your organization.description· string · optionnel
Optional project description (max 500 characters).billing_type· string · requis · TM | Fix | OVH
Billing type to allow on the project (required). One of: TM, Fix, OVH.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.create_general_activity· boolean · optionnel
Optional. When true (the default for this tool), also create a default visible "General" task + activity so time can be logged on the project immediately. Set false to create an empty project with no activities yet.
Exemple d'appel{"name": "create_project", "arguments": {"name": "texte", "customer_id": "texte", "billing_type": "TM"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_scheduled_report≈ 230 tokens
Create a new scheduled report definition. The report will be generated and emailed to recipients on the configured cadence.
Paramètres, retour & exemple (6)
Paramètresname· string · requis
Name for this scheduled report (max 150 chars).format· string · optionnel
Output format: pdf (default) or csv.cadence· string · requis
Schedule cadence: Daily, Weekly, or Monthly.recipients· string · requis
Comma-separated recipient email addresses.report_type· string · requis
Report type: DailySummary or MonthlyHours.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "create_scheduled_report", "arguments": {"name": "texte", "cadence": "texte", "recipients": "texte", "report_type": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_subtask≈ 203 tokens
Create a subtask under a task. All time entries are logged against subtasks, so every task needs at least one. The subtask inherits a valid billing type from the parent task. Discover ids with find_billing_work - never ask the user for an id.
Paramètres, retour & exemple (4)
Paramètresname· string · requis
Subtask name (required).task_id· string · requis
Id of the parent task (required). Must be a task in your organization.description· string · optionnel
Optional subtask description.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "create_subtask", "arguments": {"name": "texte", "task_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_task≈ 265 tokens
Create a task under a project. Tasks group the subtasks that time is logged against. The task inherits its allowed billing types from the parent project. Discover ids with find_billing_work - never ask the user for an id.
Paramètres, retour & exemple (5)
Paramètresname· string · requis
Task name (required).project_id· string · requis
Id of the parent project (required). Must be a project in your organization.description· string · optionnel
Optional task description.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.create_general_activity· boolean · optionnel
Optional. When true (the default for this tool), also create a default visible "General" activity under the task so time can be logged immediately. Set false to create a task with no activities yet.
Exemple d'appel{"name": "create_task", "arguments": {"name": "texte", "project_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_time_report≈ 375 tokens
Create a new time entry on a subtask for the current user. The entry is always attributed to you — you cannot create entries on behalf of another user. Supply subtask_id, the date (ISO 8601 YYYY-MM-DD), start_time (HH:mm; when omitted, right after your last entry that day, or 09:00 on a day with nothing logged), and hours.
Paramètres, retour & exemple (6)
Paramètresdate· string · requis
Date of the work (ISO 8601 YYYY-MM-DD, e.g. 2026-01-15).text· string · optionnel
Optional description of the work performed (max 1000 characters).hours· number · requis
Hours worked (> 0 and ≤ 24).start_time· string · optionnel
Optional start time in 24-h HH:mm. When omitted, the entry starts right after your last entry that day, counting entries on cards still waiting for confirmation (09:00 on a day with nothing logged). To change a card that is still waiting for confirmation, propose its change in full (every entry it holds, each at the start_time it has there; a batch card with bulk_create_time_reports) and tell the user to cancel the old card.subtask_id· string · requis
Id of the subtask to log time against.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "create_time_report", "arguments": {"date": "texte", "hours": 1, "subtask_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_api_key≈ 202 tokens
Permanently revoke one of your Integration API keys. Any MCP clients or integrations using the key will lose access immediately and cannot be restored. Returns a preview; re-call with the confirm_token and an idempotency_key to commit.
Paramètres, retour & exemple (3)
Paramètreskey_id· string · requis
Id of the API key to permanently revoke.confirm_token· string · optionnel
Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes.idempotency_key· string · optionnel
Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "delete_api_key", "arguments": {"key_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_custom_field≈ 198 tokens
Delete a custom-field definition from the organization. If the field is mandatory and already has values stored on entities the service will reject the delete with a clear reason. Returns a preview unless confirm=true is set. Admin role required.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.custom_field_id· string · requis
Id of the custom field definition to delete.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "delete_custom_field", "arguments": {"custom_field_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_customer≈ 174 tokens
Soft-delete a billing customer and its whole hierarchy (projects, tasks, subtasks) into the recycle bin, where an admin can restore it. Returns a preview unless confirm=true is set.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.customer_id· string · requis
Id of the customer to delete.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "delete_customer", "arguments": {"customer_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_draft_invoice≈ 170 tokens
Delete a DRAFT invoice permanently. Only draft invoices can be deleted; issued invoices are permanent records. Returns a preview unless confirm=true is set.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.invoice_id· string · requis
Id of the draft invoice to delete.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "delete_draft_invoice", "arguments": {"invoice_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_favorite≈ 146 tokens
Delete a saved time-entry favorite. Requires confirm=true to proceed.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.favorite_id· string · requis
Id of the favorite to delete.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "delete_favorite", "arguments": {"favorite_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_frame_order≈ 183 tokens
Soft-delete an Open frame order into the recycle bin (restorable by an Admin). Blocked when Issued/Sent/Paid invoices are linked — void or unlink those first. Returns a preview unless confirm=true is set.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.frame_order_id· string · requis
Id of the frame order to delete.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "delete_frame_order", "arguments": {"frame_order_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_holiday_profile≈ 186 tokens
Delete a named national-holiday profile from the organization. The year's holidays will no longer be applied to time calculations. Returns a preview unless confirm=true is set. Admin role required.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.holiday_profile_id· string · requis
Id of the holiday profile to delete.
Exemple d'appel{"name": "delete_holiday_profile", "arguments": {"holiday_profile_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_organization≈ 187 tokens
Soft-delete this organization. All members will be locked out and the org will be hidden until a platform admin restores it within the retention window. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. Owner role required.
Paramètres, retour & exemple (2)
Paramètresconfirm_token· string · optionnel
Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes.idempotency_key· string · optionnel
Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "delete_organization", "arguments": {"confirm_token": "texte", "idempotency_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_project≈ 170 tokens
Soft-delete a billing project and its whole task/subtask hierarchy into the recycle bin, where an admin can restore it. Returns a preview unless confirm=true is set.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.project_id· string · requis
Id of the project to delete.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "delete_project", "arguments": {"project_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_subtask≈ 160 tokens
Soft-delete a billing subtask into the recycle bin, where an admin can restore it. Returns a preview unless confirm=true is set.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.subtask_id· string · requis
Id of the subtask to delete.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "delete_subtask", "arguments": {"subtask_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_task≈ 163 tokens
Soft-delete a billing task and its subtask hierarchy into the recycle bin, where an admin can restore it. Returns a preview unless confirm=true is set.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.task_id· string · requis
Id of the task to delete.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "delete_task", "arguments": {"task_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_time_report≈ 191 tokens
Delete a time report entry. Members can delete their own reports; Managers/Admins can delete others' (subject to org settings). Returns a preview unless confirm=true is set.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.time_report_id· string · requis
Id of the time report entry to delete: the time_report_id list_my_time_entries returns for it.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "delete_time_report", "arguments": {"time_report_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_work_schedule≈ 182 tokens
Delete a named organization work schedule profile. Users assigned to this schedule will fall back to the default schedule. Returns a preview unless confirm=true is set. Admin role required.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.work_schedule_id· string · requis
Id of the work schedule to delete.
Exemple d'appel{"name": "delete_work_schedule", "arguments": {"work_schedule_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - disable_user≈ 215 tokens
Disable an organization member so they can no longer sign in or use the app. Reversible — the user can be re-enabled from the web application. Returns a preview unless confirm=true is set.
Paramètres, retour & exemple (4)
Paramètresreason· string · optionnel
Optional reason for disabling the user (stored for audit purposes).confirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.org_user_id· string · requis
Id of the OrganizationUser record to disable (not the Firebase userId).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "disable_user", "arguments": {"org_user_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - enable_user≈ 229 tokens
Re-enable a previously disabled organization member so they can log in and use the platform again. Requires the org_user_id. The organization is fixed by your context — never pass an organization id. You cannot target a user more privileged than yourself, and not your own account. It is refused when the organization's plan has no free seat: its active members already fill the plan's limit (error_code SUBSCRIPTION.SEAT_LIMIT_REACHED, with the limit in error_details) — the fix is to upgrade the plan or disable another member first.
Paramètres, retour & exemple (2)
Paramètresorg_user_id· string · requis
Id of the OrganizationUser to enable.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "enable_user", "arguments": {"org_user_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - find_billing_work≈ 290 tokens
Find the projects, tasks and subtasks in your organization where time can be tracked. Pass a name fragment as query to search customer, project, task and subtask names at once: every matching subtask comes back in `matches` with its full path (customer > project > task > subtask) and its subtask_id. Use this to locate where to record work. Returns ids and names only.
Paramètres, retour & exemple (3)
Paramètresquery· string · optionnel
Optional case-insensitive name fragment. It matches customer, project, task and subtask names: `projects` lists the projects whose own name or customer's name matches, and `matches` lists every subtask whose own name or task's name matches, with its full path and subtask_id. With project_id, it filters that project's tasks and returns that project's matching subtasks in `matches`.project_id· string · optionnel
Optional project id to drill into. When supplied, returns that project's tasks and subtasks.max_results· integer · optionnel
Optional maximum number of rows to return (1-50, default 50).
Exemple d'appel{"name": "find_billing_work", "arguments": {"query": "texte", "project_id": "texte", "max_results": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - generate_invoice≈ 307 tokens
Generate a DRAFT invoice from a customer's approved billable hours over a billing period. The draft is editable and can be deleted before it is issued.
Paramètres, retour & exemple (8)
Paramètresnotes· string · optionnel
Optional notes to include on the invoice.due_date· string · optionnel
Optional explicit due date (ISO 8601). Overrides payment_terms-based calculation.grouping· string · optionnel
How to group approved hours into line items: "project" (default) or "task".period_end· string · requis
Billing period end date (ISO 8601, e.g. 2026-05-31).customer_id· string · requis
Id of the customer to invoice.period_start· string · requis
Billing period start date (ISO 8601, e.g. 2026-05-01).payment_terms· string · optionnel
Payment terms string, e.g. "Net 30" (default).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "generate_invoice", "arguments": {"period_end": "texte", "customer_id": "texte", "period_start": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_billing_report≈ 116 tokens
Get billing summary for a customer over a date range
Paramètres, retour & exemple (3)
Paramètresend_date· string · requis
End date in YYYY-MM-DD formatstart_date· string · requis
Start date in YYYY-MM-DD formatcustomer_id· string · requis
The customer ID to get billing report for
Exemple d'appel{"name": "get_billing_report", "arguments": {"end_date": "texte", "start_date": "texte", "customer_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_budget_alerts≈ 43 tokens
Get all budget alerts for the organization showing projects that are over or near budget
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_budget_alerts", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_budget_health≈ 63 tokens
Get overall budget health summary for the organization, including project counts by status (on-track, warning, critical), total remaining budget hours, and active alerts
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_budget_health", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_cost_rate_history≈ 84 tokens
Get the cost-rate history for a specific user in the organization. Requires Finance role or higher.
Paramètres, retour & exemple (1)
Paramètresuser_id· string · requis
Firebase UID of the user whose cost-rate history to retrieve.
Exemple d'appel{"name": "get_cost_rate_history", "arguments": {"user_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_customer_info≈ 81 tokens
Get detailed information about a customer including health score and portfolio
Paramètres, retour & exemple (1)
Paramètrescustomer_id· string · requis
The unique identifier of the customer to retrieve information for
Exemple d'appel{"name": "get_customer_info", "arguments": {"customer_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_dashboard_metrics≈ 84 tokens
Get organization dashboard metrics including utilization, revenue, and active projects
Paramètres, retour & exemple (1)
Paramètresmonth· string · optionnel
Month to get metrics for in YYYY-MM format (e.g. 2026-01). Defaults to current month if not provided.
Exemple d'appel{"name": "get_dashboard_metrics", "arguments": {"month": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_employee_timesheet≈ 150 tokens
Get an employee's timesheet report showing target hours, actual hours logged, and variance. Can look up by employee name or default to the requesting user.
Paramètres, retour & exemple (3)
Paramètresend_date· string · requis
End date in YYYY-MM-DD formatstart_date· string · requis
Start date in YYYY-MM-DD formatemployee_name· string · optionnel
Name of the employee to look up. Leave empty or say 'me' for your own timesheet.
Exemple d'appel{"name": "get_employee_timesheet", "arguments": {"end_date": "texte", "start_date": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_frame_order_utilization≈ 116 tokens
Report each frame order's contracted cap vs billed draw-down vs remaining, for both hours and amount, with utilization percentage. Optionally filtered by customer and/or status.
Paramètres, retour & exemple (2)
Paramètresstatus· string · optionnel
Filter by status: Open or Closed (optional).customer_id· string · optionnel
Filter by customer id (optional).
Exemple d'appel{"name": "get_frame_order_utilization", "arguments": {"status": "texte", "customer_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_hours_summary≈ 151 tokens
Get a summary of hours logged for a user or team over a date range
Paramètres, retour & exemple (3)
Paramètresscope· string · optionnel
Scope of the summary: 'user' for individual user hours, 'team' for organization-wide overview. Defaults to 'user'.end_date· string · requis
End date for the summary period (ISO 8601 format, e.g. 2026-01-31)start_date· string · requis
Start date for the summary period (ISO 8601 format, e.g. 2026-01-01)
Exemple d'appel{"name": "get_hours_summary", "arguments": {"end_date": "texte", "start_date": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_import_template≈ 63 tokens
Return the CSV template for bulk-importing the work hierarchy (customers, projects, tasks, subtasks). Fill the template and call validate_import before commit_import.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_import_template", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_invoice≈ 66 tokens
Get the full details of a specific invoice by ID.
Paramètres, retour & exemple (1)
Paramètresinvoice_id· string · requis
ID of the invoice to retrieve (required).
Exemple d'appel{"name": "get_invoice", "arguments": {"invoice_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_my_time_entries≈ 137 tokens
Get the current user's time entry analytics for a date range, including hours breakdown by project and customer, billable vs non-billable split, and target comparison
Paramètres, retour & exemple (2)
Paramètresend_date· string · requis
End date for the analytics period (ISO 8601 format, e.g. 2026-01-31)start_date· string · requis
Start date for the analytics period (ISO 8601 format, e.g. 2026-01-01)
Exemple d'appel{"name": "get_my_time_entries", "arguments": {"end_date": "texte", "start_date": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_project_status≈ 78 tokens
Get detailed project status including budget, hours, and task breakdown
Paramètres, retour & exemple (1)
Paramètresproject_id· string · requis
The unique identifier of the project to retrieve status for
Exemple d'appel{"name": "get_project_status", "arguments": {"project_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_project_team≈ 174 tokens
Get the people associated with a project: who is ASSIGNED to it (formally responsible / accountable) and the TOP CONTRIBUTORS by hours logged (who is actually doing the work and driving the budget/overrun). Use this to answer 'who is responsible for / working on a project', especially when a project is over budget. Budget-alert results include the project_id you can pass directly into this tool.
Paramètres, retour & exemple (1)
Paramètresproject_id· string · requis
The unique identifier of the project. Resolve a project name to its ID with find_billing_work or list_projects first.
Exemple d'appel{"name": "get_project_team", "arguments": {"project_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_resource_utilization≈ 132 tokens
Get team resource utilization summary showing target hours, actual hours, billable hours, and utilization percentage for the organization
Paramètres, retour & exemple (2)
Paramètresend_date· string · requis
End date for the utilization period (ISO 8601 format, e.g. 2026-01-31)start_date· string · requis
Start date for the utilization period (ISO 8601 format, e.g. 2026-01-01)
Exemple d'appel{"name": "get_resource_utilization", "arguments": {"end_date": "texte", "start_date": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_unbilled_time≈ 54 tokens
Get a summary of unbilled time across the organization, including total hours, total amount, number of entries, and aging information
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_unbilled_time", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - invite_user≈ 240 tokens
Invite a person to join your organization by email at a chosen role. The organization is fixed by your context - never pass an organization id. Valid roles: Admin, Finance, Manager, Member, Viewer (you can only invite at a role no more privileged than your own). The invitee receives an email with an acceptance link.
Paramètres, retour & exemple (3)
Paramètresrole· string · requis · Admin | Finance | Manager | Member | Viewer
Role to grant on acceptance (required). One of: Admin, Finance, Manager, Member, Viewer. You cannot invite at a role more privileged than your own.email· string · requis
Email address of the person to invite (required).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "invite_user", "arguments": {"role": "Admin", "email": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - issue_invoice≈ 214 tokens
Issue a Draft invoice: assigns a gapless invoice number, locks the invoice as immutable, and marks source hours as Invoiced. IRREVERSIBLE — corrections require void + reissue. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit.
Paramètres, retour & exemple (3)
Paramètresinvoice_id· string · requis
Id of the Draft invoice to issue.confirm_token· string · optionnel
Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes.idempotency_key· string · optionnel
Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "issue_invoice", "arguments": {"invoice_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_customers≈ 30 tokens
List all customers in the organization
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_customers", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_favorites≈ 39 tokens
List the current user's saved time-entry favorites (quick-entry shortcuts).
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_favorites", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_invoices≈ 142 tokens
List invoices for your organization, optionally filtered by customer and status.
Paramètres, retour & exemple (4)
Paramètresstatus· string · optionnel
Optional: filter by invoice status (e.g. Draft, Issued, Paid, Void).page_size· integer · optionnel
Number of results per page (default 20, max 100).customer_id· string · optionnel
Optional: filter by customer ID.page_number· integer · optionnel
Page number, 1-based (default 1).
Exemple d'appel{"name": "list_invoices", "arguments": {"status": "texte", "page_size": 1, "customer_id": "texte", "page_number": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_my_time_entries≈ 241 tokens
List the current user's own individual time entries for a date range: for each, its time_report_id (what update_time_report and delete_time_report take), date, start and end time of day on the organization's clock, project and subtask names and ids, hours, description, billable flag and status. Use this to see exactly what was logged (the per-entry detail), as opposed to aggregated totals, and to find the entry the user wants to change or delete.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
Optional maximum number of entries to return (1-200, default 200). Entries are returned most-recent first.end_date· string · requis
End date of the range (ISO 8601 format, e.g. 2026-01-31)start_date· string · requis
Start date of the range (ISO 8601 format, e.g. 2026-01-01)
Exemple d'appel{"name": "list_my_time_entries", "arguments": {"end_date": "texte", "start_date": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_projects≈ 70 tokens
List all projects in the organization with their status and budget information
Paramètres, retour & exemple (1)
Paramètrescustomer_id· string · optionnel
Optional customer ID to filter projects by customer
Exemple d'appel{"name": "list_projects", "arguments": {"customer_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_recycle_bin≈ 121 tokens
List soft-deleted entities currently in the recycle bin, optionally filtered by entity type and paged.
Paramètres, retour & exemple (3)
Paramètrespage· number · optionnel
1-based page number (default 1).page_size· number · optionnel
Items per page (default 20).entity_type· string · optionnel
Filter by type: Customer, Project, Task, or SubTask. Omit for all types.
Exemple d'appel{"name": "list_recycle_bin", "arguments": {"page": 1, "page_size": 1, "entity_type": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_scheduled_reports≈ 37 tokens
List all scheduled report definitions for the organization.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_scheduled_reports", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - log_time≈ 332 tokens
Create a single time entry on a subtask for the current user. Requires permission to log time.
Paramètres, retour & exemple (5)
Paramètresdate· string · requis
Date of the work (ISO 8601 format, e.g. 2026-01-15).text· string · optionnel
Optional description of the work performed.hours· number · requis
Number of hours worked (greater than 0 and at most 24).start_time· string · optionnel
Optional start time of day in 24-hour HH:mm (e.g. "12:00"). Set this when the user gives a specific time or a time range (and put the range length in 'hours'); the entry then runs from this time for 'hours'. When omitted, the entry starts right after the user's last entry that day, counting entries on cards still waiting for confirmation (09:00 on a day with nothing logged). To change a card that is still waiting for confirmation, propose its change in full (every entry it holds, each at the start_time it has there; a batch card with bulk_create_time_reports) and tell the user to cancel the old card.subtask_id· string · requis
Id of the subtask to log time against. All time entries are recorded at the subtask level.
Exemple d'appel{"name": "log_time", "arguments": {"date": "texte", "hours": 1, "subtask_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - manage_user_work_schedule≈ 298 tokens
Manage YOUR OWN personal work schedule. action is one of: create, update, delete, assign (assign = make a schedule your active one). For update/delete/assign, provide schedule_id. default_hours is your standard daily hours (for a simple schedule). The organization is fixed by your context, and you can only manage your own schedule.
Paramètres, retour & exemple (6)
Paramètresname· string · optionnel
Optional schedule notes/name.action· string · requis · create | update | delete | assign
What to do (required): create, update, delete, or assign.is_active· boolean · optionnel
Whether this schedule is active (create/update).schedule_id· string · optionnel
Id of your schedule (required for update, delete, assign).default_hours· number · optionnel
Standard daily working hours for a simple schedule (e.g. 8).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "manage_user_work_schedule", "arguments": {"action": "create"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - mark_invoice_paid≈ 191 tokens
Mark an issued or sent invoice as Paid. Optionally record the paid amount and payment date. Returns a preview unless confirm=true is set.
Paramètres, retour & exemple (4)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.paid_date· string · optionnel
Optional payment date (ISO 8601). Defaults to today.invoice_id· string · requis
Id of the invoice to mark as paid.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "mark_invoice_paid", "arguments": {"invoice_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - mark_time_invoiced≈ 209 tokens
Mark one or more time reports as invoiced, optionally linking them to an existing invoice. Requires Manager role or above.
Paramètres, retour & exemple (4)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.invoice_id· string · optionnel
Optional ID of an existing invoice to link these time reports to.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.time_report_ids· array · requis
List of time report IDs to mark as invoiced (required, at least one).
Exemple d'appel{"name": "mark_time_invoiced", "arguments": {"time_report_ids": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - move_project≈ 179 tokens
Move a billing project to a different customer within your organization. Both the project and the destination customer must belong to your organization. Requires Manager role or above.
Paramètres, retour & exemple (3)
Paramètresproject_id· string · requis
ID of the project to move (required).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.new_customer_id· string · requis
ID of the destination customer (required, must belong to your organization).
Exemple d'appel{"name": "move_project", "arguments": {"project_id": "texte", "new_customer_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - move_subtask≈ 172 tokens
Move a subtask to a different task within your organization. Both the subtask and the destination task must belong to your organization. Requires Manager role or above.
Paramètres, retour & exemple (3)
Paramètressubtask_id· string · requis
ID of the subtask to move (required).new_task_id· string · requis
ID of the destination task (required, must belong to your organization).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "move_subtask", "arguments": {"subtask_id": "texte", "new_task_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - move_task≈ 173 tokens
Move a task to a different billing project within your organization. Both the task and the destination project must belong to your organization. Requires Manager role or above.
Paramètres, retour & exemple (3)
Paramètrestask_id· string · requis
ID of the task to move (required).new_project_id· string · requis
ID of the destination project (required, must belong to your organization).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "move_task", "arguments": {"task_id": "texte", "new_project_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - permanent_delete_entity≈ 274 tokens
Permanently and IRREVERSIBLY hard-delete an entity from the recycle bin. The entity and all its children are removed from the database — this cannot be undone. Requires Admin role. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. entity_type must be one of: Customer, Project, Task, SubTask.
Paramètres, retour & exemple (4)
Paramètresentity_id· string · requis
Id of the recycle-bin entity to permanently delete.entity_type· string · requis
Type of entity to permanently delete. One of: Customer, Project, Task, SubTask.confirm_token· string · optionnel
Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes.idempotency_key· string · optionnel
Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "permanent_delete_entity", "arguments": {"entity_id": "texte", "entity_type": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - recall_timesheet≈ 175 tokens
Withdraw your submitted timesheet for a given month back to Draft (un-submit), reopening entries for editing. Only valid while the period is Submitted — after approval ask a manager to reopen it. Supply year and month (1-12).
Paramètres, retour & exemple (3)
Paramètresyear· integer · requis
Calendar year of the month to recall (e.g. 2026).month· integer · requis
Calendar month to recall (1-12).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "recall_timesheet", "arguments": {"year": 1, "month": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - reissue_invoice≈ 227 tokens
Void an issued invoice and clone it into a new editable Draft (void + reissue). The original is voided and retained for audit; the new Draft can be edited then re-issued. The void is IRREVERSIBLE. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit.
Paramètres, retour & exemple (3)
Paramètresinvoice_id· string · requis
Id of the issued invoice to void and reissue as a new Draft.confirm_token· string · optionnel
Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes.idempotency_key· string · optionnel
Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "reissue_invoice", "arguments": {"invoice_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - reject_timesheet≈ 261 tokens
Reject a submitted timesheet period, returning it to the reporter for correction. The period and its time reports revert to Rejected (editable). A rejection comment is required. Use confirm=true to proceed. Requires Manager or Admin/Owner role (Finance is excluded — timesheet approval is PM work, not finance).
Paramètres, retour & exemple (4)
Paramètrescomment· string · requis
Rejection reason shown to the reporter. Required so they know what to fix.confirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.submission_period_id· string · requis
Id of the submission period to reject (from get_pending_approvals or list_approval_history).
Exemple d'appel{"name": "reject_timesheet", "arguments": {"comment": "texte", "submission_period_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - remove_user≈ 201 tokens
Permanently remove an organization member. This action is IRREVERSIBLE — the user must be re-invited to rejoin. Returns a preview; re-call with the confirm_token and an idempotency_key to commit.
Paramètres, retour & exemple (3)
Paramètresorg_user_id· string · requis
Id of the OrganizationUser record to remove (not the Firebase userId).confirm_token· string · optionnel
Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes.idempotency_key· string · optionnel
Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "remove_user", "arguments": {"org_user_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - remove_user_from_customer≈ 198 tokens
Remove a user's assignment from a customer, revoking their access to the customer's projects and tasks. Requires confirm=true to proceed.
Paramètres, retour & exemple (4)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.customer_id· string · requis
Id of the customer to remove the user from.org_user_id· string · requis
OrganizationUsers.Id of the member to unassign.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "remove_user_from_customer", "arguments": {"customer_id": "texte", "org_user_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - remove_user_project≈ 222 tokens
Remove an organization member's assignment from a specific project. The user will no longer have direct visibility to that project (they may still see it via a customer assignment). Requires org_user_id and project_id. The organization is fixed by your context — never pass an organization id. You cannot target a user more privileged than yourself.
Paramètres, retour & exemple (3)
Paramètresproject_id· string · requis
Id of the project to remove the user from.org_user_id· string · requis
Id of the OrganizationUser to remove from the project (not the Firebase user id).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "remove_user_project", "arguments": {"project_id": "texte", "org_user_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - reopen_month≈ 226 tokens
Reopen a previously closed billing month, allowing time to be logged and edited again. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. Reversible only by closing the month again.
Paramètres, retour & exemple (4)
Paramètresyear· integer · requis
Calendar year of the month to reopen (e.g. 2026).month· integer · requis
Calendar month to reopen (1-12).confirm_token· string · optionnel
Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes.idempotency_key· string · optionnel
Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "reopen_month", "arguments": {"year": 1, "month": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - reopen_timesheet≈ 280 tokens
Reopen a Submitted or Approved timesheet period for corrections. The period and its time reports revert to Rejected (editable), allowing the reporter to edit and resubmit. Use this when an approved period needs fixing. An optional comment can be provided. Use confirm=true to proceed. Requires Manager or Admin/Owner role (Finance is excluded — timesheet approval is PM work, not finance).
Paramètres, retour & exemple (4)
Paramètrescomment· string · optionnel
Optional comment explaining why the period is being reopened. Shown to the reporter.confirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.submission_period_id· string · requis
Id of the submission period to reopen (from get_pending_approvals or list_approval_history).
Exemple d'appel{"name": "reopen_timesheet", "arguments": {"submission_period_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - resend_invite≈ 151 tokens
Re-send a pending invitation email to the invitee and reset its status to Pending. Requires the invite_id (discover it via list of pending invites). The organization is fixed by your context — never pass an organization id.
Paramètres, retour & exemple (2)
Paramètresinvite_id· string · requis
Id of the pending invitation to resend.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "resend_invite", "arguments": {"invite_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - restore_entity≈ 177 tokens
Restore a soft-deleted entity (customer, project, task, or subtask) and all its children from the recycle bin. Requires Admin role. entity_type must be one of: Customer, Project, Task, SubTask.
Paramètres, retour & exemple (3)
Paramètresentity_id· string · requis
Id of the deleted entity to restore.entity_type· string · requis
Type of entity to restore. One of: Customer, Project, Task, SubTask.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "restore_entity", "arguments": {"entity_id": "texte", "entity_type": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - search≈ 117 tokens
Search the organization's work-structure entities (customers, projects, tasks, subtasks, users) by id or name. Returns a flat, assignment-scoped result list.
Paramètres, retour & exemple (2)
Paramètreslimit· number · optionnel
Maximum results to return (default 30).query· string · requis
Search text — matches by entity id (prefix) and name (contains).
Exemple d'appel{"name": "search", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - send_invoice≈ 166 tokens
Mark an issued invoice as Sent to the customer. The invoice must already be in Issued status. Returns a preview unless confirm=true is set.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.invoice_id· string · requis
Id of the issued invoice to mark as sent.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "send_invoice", "arguments": {"invoice_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - set_budget_thresholds≈ 271 tokens
Set the organization-level budget alert thresholds. budget_warning_threshold_percent is the utilization % at which a project is flagged At-Risk; budget_critical_threshold_percent is the % at which it is flagged Over-Budget. The warning threshold must be strictly less than the critical threshold. Supply one or both — only the fields you provide are changed (PATCH semantics). The organization is fixed by your context — never pass an organization id.
Paramètres, retour & exemple (3)
Paramètresidempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.budget_warning_threshold_percent· integer · optionnel
Utilization % at which a project is flagged At-Risk (must be less than the critical threshold, 1-99).budget_critical_threshold_percent· integer · optionnel
Utilization % at which a project is flagged Over-Budget (must be greater than the warning threshold, 2-100).
Exemple d'appel{"name": "set_budget_thresholds", "arguments": {"idempotency_key": "texte", "budget_warning_threshold_percent": 1, "budget_critical_threshold_percent": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - set_custom_field_value≈ 342 tokens
Set the value of a custom field on a specific entity (a project, task, subtask, time report, or customer). The custom field must already be defined for that entity type. The organization is fixed by your context. You must have permission to update the target entity.
Paramètres, retour & exemple (5)
Paramètresvalue· string · requis
The value to set, as a string. It is validated/coerced to the field's declared type (Number, Date, DateTime, or one of the list options).entity· string · requis · billing_projects | billing_tasks | billing_sub_tasks | sub_tasks_time_reports | billing_customers
The entity type (required). One of: billing_projects, billing_tasks, billing_sub_tasks, sub_tasks_time_reports, billing_customers.field_id· string · requis
The field_id of the custom field definition (required). Must be defined for this entity type.entity_id· string · requis
Id of the specific entity instance to set the value on (required). Must be in your organization.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "set_custom_field_value", "arguments": {"value": "texte", "entity": "billing_projects", "field_id": "texte", "entity_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - set_org_work_schedule≈ 414 tokens
Create or update a named organization-level work schedule (a weekly working-time profile). Provide schedule_id to update an existing one, or omit it to create a new one. weekly_schedule is a JSON object mapping lowercase day names to a working window, e.g. {"monday":{"start":"09:00","end":"18:00"},"saturday":null}. The organization is fixed by your context. On update, only the fields you supply are changed.
Paramètres, retour & exemple (8)
Paramètresname· string · optionnel
Schedule name (required when creating).notes· string · optionnel
Optional free-text notes.is_active· boolean · optionnel
Whether the profile is active. Defaults to true on create.schedule_id· string · optionnel
Id of an existing schedule to UPDATE. Omit to CREATE a new one.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.weekly_schedule· string · optionnel
A JSON object (as a string) mapping lowercase day names (sunday..saturday) to a {"start":"HH:mm","end":"HH:mm"} window, or null for a non-working day. Example: {"monday":{"start":"09:00","end":"18:00"},"sunday":null}.first_day_of_week· integer · optionnel
First day of the week: 0=Sunday .. 6=Saturday (1=Monday default).default_for_countries· string · optionnel
Optional comma-separated ISO-2 country codes this profile is the default for, e.g. "US,CA".
Exemple d'appel{"name": "set_org_work_schedule", "arguments": {"name": "texte", "notes": "texte", "is_active": true, "schedule_id": "texte", "idempotency_key": "texte", "weekly_schedule": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - set_user_cost_rate≈ 306 tokens
Set the internal hourly COST rate for one member of your organization (used for profit/margin reporting). The organization is fixed by your context - never pass an organization id. You cannot set your own cost rate. The rate value is never echoed back.
Paramètres, retour & exemple (6)
Paramètresuser_id· string · requis
Id (or Firebase UID) of the member whose cost rate is being set (required). Must be a member of your organization; cannot be yourself.currency· string · optionnel
Optional ISO 4217 currency code (e.g. USD, EUR). Defaults to USD.hourly_rate· number · requis
The hourly cost rate, a positive number (required).effective_to· string · optionnel
Optional date this rate stops applying (YYYY-MM-DD). Omit for an open-ended rate.effective_from· string · optionnel
Optional date this rate takes effect (YYYY-MM-DD). Defaults to today.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "set_user_cost_rate", "arguments": {"user_id": "texte", "hourly_rate": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - start_timer≈ 186 tokens
Start (or replace) your running timer on a subtask. There is at most one running timer per user; starting a new one replaces any existing. Stop it later with stop_timer to create a Draft time entry, or cancel it with cancel_timer to discard it. Supply subtask_id.
Paramètres, retour & exemple (3)
Paramètressubtask_id· string · requis
Id of the subtask to track time against.description· string · optionnel
Optional description of the work being tracked.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "start_timer", "arguments": {"subtask_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - stop_timer≈ 104 tokens
Stop your running timer. The elapsed time is computed and a Draft time entry is created automatically. Returns the created time entry. No arguments needed.
Paramètres, retour & exemple (1)
Paramètresidempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "stop_timer", "arguments": {"idempotency_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - submit_timesheet≈ 171 tokens
Submit your time entries for a given month for manager approval. Draft and Rejected entries in the month are transitioned to Submitted. A billing-closed month cannot be submitted. Supply year and month (1-12).
Paramètres, retour & exemple (3)
Paramètresyear· integer · requis
Calendar year of the month to submit (e.g. 2026).month· integer · requis
Calendar month to submit (1-12).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "submit_timesheet", "arguments": {"year": 1, "month": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - suggest_holiday_profile≈ 205 tokens
Look up the official public/national holidays for a country (ISO-2 code, e.g. US, IL, GB) and year from an authoritative public source (Hebcal for Israel, Nager.Date for everywhere else). Returns a DRAFT list of holiday dates: each is either a full day off or a half/partial working day (with a start/end working window). Use this to PROPOSE a holiday profile — never invent holiday dates from memory. The dates returned are authoritative for that exact year.
Paramètres, retour & exemple (2)
Paramètresyear· integer · requis
The calendar year to look up holidays for (e.g. 2026).country· string · requis
ISO-2 country code (two letters), e.g. "US", "IL", "GB", "DE".
Exemple d'appel{"name": "suggest_holiday_profile", "arguments": {"year": 1, "country": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - undo_write_off≈ 187 tokens
Reverse the most-recent write-off on a time report, restoring the written-off hours to the billable pool. The billing month must still be open. Requires Finance role or above.
Paramètres, retour & exemple (3)
Paramètresconfirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.time_report_id· string · requis
ID of the time report whose most-recent write-off should be reversed (required).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "undo_write_off", "arguments": {"time_report_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_custom_field≈ 312 tokens
Update an existing custom field definition (title, type, options, or mandatory flag) in your organization. The organization is fixed by your context. You cannot change a field's field_id or the entity it applies to. Only the properties you supply are changed.
Paramètres, retour & exemple (6)
Paramètrestype· string · optionnel · String | Number | Date | DateTime | ListOfValues
New field data type. One of: String, Number, Date, DateTime, ListOfValues.title· string · optionnel
New human-readable label.is_mandatory· boolean · optionnel
Whether a value is required when creating/updating the entity.list_of_values· array · optionnel
New options (for a ListOfValues field; at least one non-blank option).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.field_definition_id· string · requis
Id of the custom field definition to update (required). Must belong to your organization.
Exemple d'appel{"name": "update_custom_field", "arguments": {"field_definition_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_customer≈ 339 tokens
Update an existing billing customer in your organization. Only the fields you provide are changed; everything else is left as-is (PATCH semantics). Discover ids with find_billing_work - never ask the user for an id.
Paramètres, retour & exemple (10)
Paramètresname· string · optionnel
New customer name (2-50 characters).status· string · optionnel · Active | Inactive
Customer status. One of: Active, Inactive.country· string · optionnel
Customer country.currency· string · optionnel
ISO 4217 currency code (e.g. USD, EUR).customer_id· string · requis
Id of the customer to update (required). Must be a customer in your organization.description· string · optionnel
Customer description (max 200 characters).contact_name· string · optionnel
Primary contact person name.contact_email· string · optionnel
Primary contact email address.contact_phone· string · optionnel
Primary contact phone number.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "update_customer", "arguments": {"customer_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_draft_invoice≈ 283 tokens
Update editable fields on a DRAFT invoice (notes, internal notes, payment terms, payment instructions, due date, purchase order number). Only valid while the invoice is still a Draft.
Paramètres, retour & exemple (8)
Paramètresnotes· string · optionnel
Notes to appear on the invoice.due_date· string · optionnel
Due date override (ISO 8601).invoice_id· string · requis
Id of the draft invoice to update.payment_terms· string · optionnel
Payment terms, e.g. "Net 30".internal_notes· string · optionnel
Internal notes (not on the printed invoice).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.payment_instructions· string · optionnel
Bank / payment instructions for the customer.purchase_order_number· string · optionnel
Customer PO number to reference on the invoice.
Exemple d'appel{"name": "update_draft_invoice", "arguments": {"invoice_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_frame_order≈ 357 tokens
Update an Open frame order's editable fields (reference, description, caps, dates, currency, notes). Closed frame orders cannot be edited; use this only for Open frame orders.
Paramètres, retour & exemple (10)
Paramètresnotes· string · optionnel
Updated free-text notes (max 2000 chars).currency· string · optionnel
Updated ISO 4217 currency code (e.g. USD).end_date· string · optionnel
Updated end date (YYYY-MM-DD, >= start_date), or omit to clear.reference· string · requis
New unique reference string for this (org, customer), max 100 chars.start_date· string · optionnel
Updated start date (YYYY-MM-DD), or omit to clear.description· string · optionnel
Updated description (max 500 chars).total_hours· number · optionnel
Updated contracted hours cap (must be > 0, or omit/null to clear).total_amount· number · optionnel
Updated contracted amount cap (must be > 0, or omit/null to clear).frame_order_id· string · requis
Id of the frame order to update.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "update_frame_order", "arguments": {"reference": "texte", "frame_order_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_holiday_profile≈ 361 tokens
Update an existing holiday profile in your organization (name, holiday list, default-for-countries, active flag, or notes). The organization is fixed by your context. A profile's year cannot be changed. Only the fields you supply are changed; supplying holidays REPLACES the profile's holiday list. Holiday dates must fall within the profile's year.
Paramètres, retour & exemple (7)
Paramètresname· string · optionnel
New profile name.notes· string · optionnel
Optional free-text notes.holidays· string · optionnel
A JSON array (as a string) that REPLACES the profile's holidays, each: {"date":"YYYY-MM-DD","name":"...","full_day_off":true|false,"window_start":"HH:mm","window_end":"HH:mm"}. Dates must be within the profile's year.is_active· boolean · optionnel
Whether the profile is active.profile_id· string · requis
Id of the holiday profile to update (required). Must belong to your organization.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.default_for_countries· string · optionnel
Optional comma-separated ISO-2 country codes this profile is the default for, e.g. "US,CA".
Exemple d'appel{"name": "update_holiday_profile", "arguments": {"profile_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_org_settings≈ 406 tokens
Update core settings for your organization: name, country, default_time_zone, base_currency, first_day_of_month (1-28), auto_close_month_after_days, and the budget alert thresholds (budget_warning_threshold_percent must be less than budget_critical_threshold_percent). The organization is fixed by your context - never pass an organization id. Only the fields you provide are changed; everything else is left as-is.
Paramètres, retour & exemple (9)
Paramètresname· string · optionnel
Organization display name.country· string · optionnel
Organization country.base_currency· string · optionnel
Base ISO 4217 currency code (e.g. USD, EUR).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.default_time_zone· string · optionnel
Default IANA/Windows time zone id (e.g. America/New_York).first_day_of_month· integer · optionnel
Day the billing month starts (1-28).auto_close_month_after_days· integer · optionnel
Auto-close a month this many days after it ends (0 = never).budget_warning_threshold_percent· integer · optionnel
Utilization % at which a project is flagged At-Risk (must be less than the critical threshold).budget_critical_threshold_percent· integer · optionnel
Utilization % at which a project is flagged Over-Budget (must be greater than the warning threshold).
Exemple d'appel{"name": "update_org_settings", "arguments": {"name": "texte", "country": "texte", "base_currency": "texte", "idempotency_key": "texte", "default_time_zone": "texte", "first_day_of_month": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_project≈ 411 tokens
Update an existing billing project in your organization. Only the fields you provide are changed (PATCH semantics). You can rename the project, update its description, change its status, toggle which billing types are allowed (TM/Fix/OVH), and set per-type hour limits. Discover ids with find_billing_work - never ask the user for an id.
Paramètres, retour & exemple (9)
Paramètresname· string · optionnel
New project name.status· string · optionnel · Active | OnHold | Completed | Cancelled
Project status. One of: Active, OnHold, Completed, Cancelled.project_id· string · requis
Id of the project to update (required). Must be a project in your organization.description· string · optionnel
Project description (max 500 characters).billing_types· string · optionnel
Comma-separated list of billing types to allow on this project. One or more of: TM, Fix, OVH. Replaces the entire set — include all types you want to keep.tm_hour_limit· integer · optionnel
T&M (Time & Materials) hour limit for this project (0 = unlimited).fix_hour_limit· integer · optionnel
Fixed-price hour limit for this project (0 = unlimited).ovh_hour_limit· integer · optionnel
Overhead hour limit for this project (0 = unlimited).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "update_project", "arguments": {"project_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_scheduled_report≈ 242 tokens
Update an existing scheduled report definition. Only the fields you provide are changed; unspecified fields keep their current values.
Paramètres, retour & exemple (7)
Paramètresid· string · requis
Id of the scheduled report to update.name· string · optionnel
New name (optional).format· string · optionnel
New format: pdf or csv (optional).cadence· string · optionnel
New cadence: Daily, Weekly, or Monthly (optional).is_active· boolean · optionnel
Enable (true) or disable (false) the schedule (optional).recipients· string · optionnel
New comma-separated recipient emails (optional).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "update_scheduled_report", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_subtask≈ 334 tokens
Update an existing subtask in your organization. Only the fields you provide are changed (PATCH semantics). You can rename the subtask, update its description, change its status, billing type, and set an hour limit. Discover ids with find_billing_work - never ask the user for an id.
Paramètres, retour & exemple (7)
Paramètresname· string · optionnel
New subtask name.status· string · optionnel · Active | Inactive | Completed
Subtask status. One of: Active, Inactive, Completed.hour_limit· integer · optionnel
Hour limit for this subtask (0 = unlimited). Validated against the parent task's limit for the subtask's billing type.subtask_id· string · requis
Id of the subtask to update (required). Must be a subtask in your organization.description· string · optionnel
Subtask description.billing_type· string · optionnel · TM | Fix | OVH
Billing type for this subtask. One of: TM, Fix, OVH. Must be allowed by the parent task.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "update_subtask", "arguments": {"subtask_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_task≈ 323 tokens
Update an existing task in your organization. Only the fields you provide are changed (PATCH semantics). You can rename the task, update its description, change its status, and set per-type hour limits. Discover ids with find_billing_work - never ask the user for an id.
Paramètres, retour & exemple (8)
Paramètresname· string · optionnel
New task name.status· string · optionnel · Active | Inactive | Completed
Task status. One of: Active, Inactive, Completed.task_id· string · requis
Id of the task to update (required). Must be a task in your organization.description· string · optionnel
Task description.tm_hour_limit· integer · optionnel
T&M (Time & Materials) hour limit for this task (0 = unlimited).fix_hour_limit· integer · optionnel
Fixed-price hour limit for this task (0 = unlimited).ovh_hour_limit· integer · optionnel
Overhead hour limit for this task (0 = unlimited).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "update_task", "arguments": {"task_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_time_report≈ 246 tokens
Update fields on one of your own time entries (PATCH — only the fields you supply are changed; everything else is left as-is). Supply the time_report_id plus any combination of date, start_time, hours, and text.
Paramètres, retour & exemple (6)
Paramètresdate· string · optionnel
New date (ISO 8601 YYYY-MM-DD).text· string · optionnel
New description (max 1000 characters).hours· number · optionnel
New duration in hours (> 0 and ≤ 24).start_time· string · optionnel
New start time in 24-h HH:mm.time_report_id· string · requis
Id of the time entry to update: the time_report_id list_my_time_entries returns for it.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "update_time_report", "arguments": {"time_report_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_user_preferences≈ 374 tokens
Update your own UI preferences: default time-entry view, sub-views, theme, and time format. Only the fields you provide are changed (PATCH semantics). Applies to your account globally across all organizations. The user is fixed by your context — you can only change your own preferences.
Paramètres, retour & exemple (7)
Paramètrestime_format· string · optionnel · 12h | 24h
Clock format. One of: 12h, 24h.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.theme_preference· string · optionnel · light | dark | system
UI theme preference. One of: light, dark, system.default_day_sub_view· string · optionnel · timeline | list | stats | table
Default sub-view for the day view. One of: timeline, list, stats, table.default_week_sub_view· string · optionnel · calendar | list | timeline
Default sub-view for the week view. One of: calendar, list, timeline.default_month_sub_view· string · optionnel · calendar | list | timeline
Default sub-view for the month view. One of: calendar, list, timeline.default_time_entry_view· string · optionnel · day | week | month
Default time-entry view. One of: day, week, month.
Exemple d'appel{"name": "update_user_preferences", "arguments": {"time_format": "12h", "idempotency_key": "texte", "theme_preference": "light", "default_day_sub_view": "timeline", "default_week_sub_view": "calendar", "default_month_sub_view": "calendar"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_user_profile≈ 282 tokens
Update a team member's organization-profile fields: first name, last name, country, timezone, and job title. Only the fields you provide are changed (PATCH semantics). Role changes are not supported here — use the dedicated role-change tool. The organization is fixed by your context — never pass an organization id. You cannot target a user more privileged than yourself.
Paramètres, retour & exemple (7)
Paramètrescountry· string · optionnel
Updated country.timezone· string · optionnel
Updated timezone (IANA or Windows id).job_title· string · optionnel
Updated job title.last_name· string · optionnel
Updated last name.first_name· string · optionnel
Updated first name.org_user_id· string · requis
Id of the OrganizationUser to update.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "update_user_profile", "arguments": {"org_user_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - use_favorite≈ 122 tokens
Record that a time-entry favorite was used, incrementing its use count and updating last-used timestamp.
Paramètres, retour & exemple (2)
Paramètresfavorite_id· string · requis
Id of the favorite to record usage for.idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "use_favorite", "arguments": {"favorite_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - validate_import≈ 100 tokens
Validate a bulk-import CSV without persisting anything. Returns row-level errors and a summary so you can fix the file before calling commit_import.
Paramètres, retour & exemple (1)
Paramètrescsv_content· string · requis
The CSV content to validate (use the template from get_import_template).
Exemple d'appel{"name": "validate_import", "arguments": {"csv_content": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - void_invoice≈ 233 tokens
Void an issued invoice (reason required): releases source hours back to Approved and retains the immutable void record. IRREVERSIBLE. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit.
Paramètres, retour & exemple (4)
Paramètresreason· string · requis
Required reason for voiding (recorded in the audit trail).invoice_id· string · requis
Id of the issued invoice to void.confirm_token· string · optionnel
Token returned by the preview (call this tool once with no token to get it). Required to commit; expires in ~10 minutes.idempotency_key· string · optionnel
Required when committing (confirm_token present): retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "void_invoice", "arguments": {"reason": "texte", "invoice_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - write_off_time≈ 239 tokens
Write off hours from an approved time report, removing them from the billable pool without invoicing (e.g. discounts or goodwill). Requires Finance role or above.
Paramètres, retour & exemple (5)
Paramètreshours· number · requis
Number of hours to write off (required, must be > 0 and ≤ remaining billable hours).reason· string · requis
Reason for the write-off (required).confirm· boolean · optionnel
Set true to perform the action. Omit or false returns a preview only — nothing is written.time_report_id· string · requis
ID of the approved time report to write off hours from (required).idempotency_key· string · optionnel
Optional caller-supplied key; retrying with the same key returns the original result instead of acting twice.
Exemple d'appel{"name": "write_off_time", "arguments": {"hours": 1, "reason": "texte", "time_report_id": "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é ».