Worksnaps
PROJECT MANAGEMENT · TASKS
Projects, tasks, time entries, and the members logging them in the account they connected.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
worksnaps_delete_projects_by_project_id_task_assignments_by_task_assignment_id_xmlWRITEDelete a task assignment via DELETE /projects/{project_id}/task_assignments/{task_assignment_id}.xml. DESTRUCTIVE: Worksnaps publishes no undelete for this record. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_delete_projects_by_project_id_task_assignments_xmlWRITEUnassign a task from a user via DELETE /projects/{project_id}/task_assignments.xml. DESTRUCTIVE: Worksnaps publishes no undelete for this record. Addressed by the `user_id` and `task_id` QUERY parameters, both required, rather than by an assignment id in the path -- the only destructive tool on this provider that is not addressed entirely by its path. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_delete_projects_by_project_id_tasks_by_task_id_xmlWRITEDelete a task via DELETE /projects/{project_id}/tasks/{task_id}.xml. DESTRUCTIVE: Worksnaps publishes no undelete for this record. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_delete_projects_by_project_id_time_entries_by_time_entry_id_xmlWRITEDelete a time entry via DELETE /projects/{project_id}/time_entries/{time_entry_id}.xml. DESTRUCTIVE: Worksnaps publishes no undelete for this record. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_delete_projects_by_project_id_user_assignments_by_user_assignment_id_xmlWRITERemove a user from a project via DELETE /projects/{project_id}/user_assignments/{user_assignment_id}.xml. DESTRUCTIVE: Worksnaps publishes no undelete for this record. Removes the user from the project. Worksnaps publishes no undelete. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_delete_projects_by_project_id_xmlWRITEDelete a project via DELETE /projects/{project_id}.xml. DESTRUCTIVE: Worksnaps publishes no undelete for this record. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_me_xmlREADShow the connected Worksnaps user via GET /me.xml. Reads the identity the connection's own API token belongs to, which is the fastest way to confirm which Worksnaps user this connection acts as. Worksnaps' reply carries that user's own `api_token`; Agentic Fabriq redacts it, along with `password`, before the result leaves the connector. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_reportsREADRun a project time report via GET /projects/{project_id}/reports. `name` selects which report Worksnaps runs; `from_timestamp`, `to_timestamp` and `user_ids` are required alongside it. The reply is a `time_summary` of `summary_line_item` rows rather than time entries. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_task_assignments_by_task_assignment_id_xmlREADShow a task assignment via GET /projects/{project_id}/task_assignments/{task_assignment_id}.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_task_assignments_xmlREADList a project's task assignments via GET /projects/{project_id}/task_assignments.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_tasks_by_task_id_xmlREADShow a task via GET /projects/{project_id}/tasks/{task_id}.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_tasks_xmlREADList a project's tasks via GET /projects/{project_id}/tasks.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_time_entries_by_time_entry_id_xmlREADShow a time entry via GET /projects/{project_id}/time_entries/{time_entry_id}.xml. Returns the thumbnail screenshot URL. Use the full-resolution tool for the full-size image URL: Worksnaps serves it from the same endpoint under a fixed `full_resolution_url=1`, which Agentic Fabriq sets server-side rather than exposing as an argument. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_time_entries_by_time_entry_id_xml_full_resolution_url_1READShow a time entry with its full-resolution screenshot URL via GET /projects/{project_id}/time_entries/{time_entry_id}.xml. Agentic Fabriq sets full_resolution_url=1 on this request server-side; it is not an argument. The same time entry as the ordinary show tool, with `full_resolution_url` in place of the thumbnail URL. The switch is a fixed query value Agentic Fabriq sets server-side, so this is a separate tool rather than an argument on the other one -- a caller able to set it could reach the full-resolution screenshot through the grant for the thumbnail. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_time_entries_xmlREADList a project's time entries via GET /projects/{project_id}/time_entries.xml. `user_ids`, `from_timestamp` and `to_timestamp` are all required; `user_ids` and `task_ids` are comma-separated lists of ids and the timestamps are Unix epoch seconds. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_user_assignments_by_user_assignment_id_xmlREADShow a user assignment via GET /projects/{project_id}/user_assignments/{user_assignment_id}.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_user_assignments_xmlREADList a project's user assignments via GET /projects/{project_id}/user_assignments.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_users_by_user_id_time_entries_xmlREADList one user's time entries in a project via GET /projects/{project_id}/users/{user_id}/time_entries.xml. `from_timestamp` and `to_timestamp` are required and are Unix epoch seconds. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_by_project_id_xmlREADShow a project via GET /projects/{project_id}.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_projects_xmlREADList projects via GET /projects.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_summary_reportsREADRun a cross-project summary report via GET /summary_reports. Spans projects rather than living under one. `name`, `from_date` and `to_date` are required; the dates are calendar dates rather than the epoch timestamps the project-scoped tools take, and `timezone_offset` decides which day a worksnap falls in. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_users_by_user_id_xmlREADShow a user via GET /users/{user_id}.xml. Worksnaps' reply carries that user's `api_token` and `password` fields; Agentic Fabriq redacts both before the result leaves the connector. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_get_users_xmlREADList users via GET /users.xml. Worksnaps' reply carries each user's `api_token` and `password` fields. Agentic Fabriq redacts both at every depth before the result leaves the connector -- unredacted, one granted read would hand out working credentials for other people's Worksnaps accounts. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_post_projects_by_project_id_task_assignments_xmlWRITEAssign a task to a user via POST /projects/{project_id}/task_assignments.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_post_projects_by_project_id_tasks_xmlWRITECreate a task in a project via POST /projects/{project_id}/tasks.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_post_projects_by_project_id_time_entries_xmlWRITEAdd offline time to a project via POST /projects/{project_id}/time_entries.xml. Adds OFFLINE time. Worksnaps logs online time from its own client application; this writes a manually-entered entry against the caller's own user in the project. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_post_projects_by_project_id_user_assignments_xmlWRITEAdd a user to a project via POST /projects/{project_id}/user_assignments.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_post_projects_by_project_id_users_by_user_id_time_entries_xmlWRITEAdd offline time for one user in a project via POST /projects/{project_id}/users/{user_id}/time_entries.xml. Adds OFFLINE time on behalf of the named user. Whether an end user's token may write time for a DIFFERENT user is decided by that user's role in the project and is not something this integration can check before the call. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_post_projects_xmlWRITECreate a project via POST /projects.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_post_users_xmlWRITECreate a user via POST /users.xml. PRIVILEGED, AND THIS CONNECTION CANNOT CALL IT. Worksnaps classifies user creation as a trusted-application operation: "when issuing these API calls, a partner API token needs to be used instead of an end user's API token", and a partner API token is agreed out-of-band between Worksnaps and a partner rather than issued self-service. This integration holds an end user's personal token, so the connector refuses this tool BY NAME before dialling rather than letting Worksnaps answer something that reads like a bad key. Create the user in the Worksnaps web interface instead. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_put_projects_by_project_id_tasks_by_task_id_xmlWRITEUpdate a task via PUT /projects/{project_id}/tasks/{task_id}.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_put_projects_by_project_id_time_entries_by_time_entry_id_xmlWRITEUpdate a time entry via PUT /projects/{project_id}/time_entries/{time_entry_id}.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_put_projects_by_project_id_user_assignments_by_user_assignment_id_xmlWRITEUpdate a user assignment via PUT /projects/{project_id}/user_assignments/{user_assignment_id}.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_put_projects_by_project_id_xmlWRITEUpdate a project via PUT /projects/{project_id}.xml. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
worksnaps_put_users_by_user_id_xmlWRITEUpdate a user via PUT /users/{user_id}.xml. The reply carries the user's `api_token` and `password`; Agentic Fabriq redacts both. Sending `password` in the body changes that user's Worksnaps password. Worksnaps speaks XML, not JSON: Agentic Fabriq sends `Accept: application/xml`, serialises this tool's `body` object into the XML document Worksnaps documents, and parses the XML reply back into data before returning it, so arguments and results are ordinary JSON here. A reply that cannot be parsed is returned as `{"raw": "<the XML>"}` rather than discarded.
Often connected alongside
Put Worksnaps behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.