Slite
DOCS & KNOWLEDGE · FILES & DOCS
Workspace notes, documentation audits, groups, and answers from Ask in the workspace 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.
slite_delete_ask_indexWRITEDelete one indexed object from a custom Ask data source by `rootId` plus `id`, so Ask stops citing it. There is no undo: restoring it means indexing it again. The object's own content lives in whatever system supplied it, so this destroys the index entry rather than the source of truth via DELETE /ask/index
slite_delete_notes_by_noteidWRITEDelete a note, answering 204 with no body. This destroys the note rather than hiding it -- use Archive or restore a note if you may want it back, which is reversible and this is not via DELETE /notes/{noteId}
slite_get_askREADAsk Slite's AI a question against the workspace's notes and get an answer with the notes it cited. `wait=false` answers 202 with a `threadId` instead of blocking -- poll it with Get an Ask thread. `parentNoteId` narrows the search to one note's subtree and `assistantId` picks a configured assistant via GET /ask
slite_get_ask_indexREADPage through the objects indexed under one custom Ask data source (`rootId`), each with its id, title, URL and last-update date. The data source itself is created in the Slite UI, not here, and a workspace whose plan does not include custom Ask sources answers 402 via GET /ask/index
slite_get_groupsREADSearch the workspace's groups by name. `query` is REQUIRED, so this searches rather than lists. Cursor-paginated via GET /groups
slite_get_groups_by_groupidREADRead one group by id: its name and description. A group is what Set a note's owner can hand a note to instead of a person via GET /groups/{groupId}
slite_get_knowledge_management_notesREADPage through the workspace's notes for a documentation audit, filtered by verification state, owner, channel and how recently they were edited. Cursor-paginated: pass the returned `nextCursor` back as `cursor`. Content is not included -- read a note to get it via GET /knowledge-management/notes
slite_get_knowledge_management_notes_emptyREADThe documentation-audit listing narrowed to notes with no content -- titles somebody created and never filled in. Filterable by owner and channel, cursor-paginated via GET /knowledge-management/notes/empty
slite_get_knowledge_management_notes_inactiveREADThe documentation-audit listing narrowed to notes nobody has touched recently -- the stale-documentation candidates. Filterable by owner and channel, cursor-paginated via GET /knowledge-management/notes/inactive
slite_get_knowledge_management_notes_publicREADThe documentation-audit listing narrowed to notes shared PUBLICLY -- readable by anyone holding the link, from outside the workspace. Same filters and same cursor pagination; this is the list to review when auditing what has been published via GET /knowledge-management/notes/public
slite_get_meREADReturn who this API key belongs to: display name, email, and the organization's name and domain. The cheapest read on the surface and the one this integration probes a pasted key with via GET /me
slite_get_notesREADList notes, optionally only those under one parent (`parentNoteId`) or owned by one member (`ownerId`), ordered by last edit or by sidebar position. Cursor-paginated. Content is not included -- use Get a note for that via GET /notes
slite_get_notes_by_noteidREADRead one note including its content, as `md`, `html` or `sliteml` (`format`). `css=inline` inlines styles into the HTML form and `compact=true` trims the response. A note too large to return answers 413 via GET /notes/{noteId}
slite_get_notes_by_noteid_childrenREADList the notes nested under one note, ordered by title, sidebar position or last edit. `includeDescendants=true` walks the whole subtree instead of one level. Cursor-paginated via GET /notes/{noteId}/children
slite_get_search_notesREADFull-text search across notes, PAGE-numbered rather than cursored (`page`, `hitsPerPage`), with each match wrapped in `highlightPreTag` / `highlightPostTag`. Narrow by subtree (`parentNoteId` plus `depth`), review state, last-edit date, and `includeArchived` via GET /search-notes
slite_get_threads_by_threadidREADRead an Ask thread by id: its rounds, its status (`processing`, `completed`, `failed` or `needs-approval`) and, once finished, the answer and the notes it cited. Answers 202 while still processing, with `retryAfterSeconds` saying how long to wait before polling again. Ask the workspace a question with `wait=false` is what mints a thread id via GET /threads/{threadId}
slite_get_usersREADSearch workspace members by name or email. `query` is REQUIRED, so this searches rather than lists -- there is no call that returns every member. `includeArchived=true` also returns deactivated ones. Cursor-paginated via GET /users
slite_get_users_by_useridREADRead one workspace member by id: display name, email, organization role, whether they are a guest, and `archivedAt` when they have been deactivated via GET /users/{userId}
slite_post_ask_indexWRITEAdd or replace one object -- markdown or HTML -- in a custom Ask data source so Ask can cite it, keyed by `id` within `rootId`. Posting the same `id` again REPLACES the previous version, and `updatedAt` is what Slite reads to judge freshness. `rootId` must name a custom data source created in the Slite UI first via POST /ask/index
slite_post_notesWRITECreate a note from a `title` plus a body in ONE of `markdown`, `html` or `sliteml`. WITHOUT `parentNoteId` the note lands in the caller's own personal channel rather than anywhere the team can see it. `templateId` applies a template, `listPosition` places it among its siblings (`top`, `bottom`, or a number -- higher comes first), and `attributes` fills a parent collection's columns in column order via POST /notes
slite_put_notes_by_noteidWRITEReplace a note's title and/or its body. The content field you send REPLACES the whole document rather than appending to it, so send the complete note; pass exactly one of `markdown`, `html` or `sliteml` via PUT /notes/{noteId}
slite_put_notes_by_noteid_archivedWRITEArchive a note (`archived: true`) or restore it (`archived: false`). Archiving takes it out of the sidebar and out of searches that do not ask for archived notes, and is REVERSIBLE -- which is the difference between this and Delete a note via PUT /notes/{noteId}/archived
slite_put_notes_by_noteid_flag_as_outdatedWRITEFlag a note as outdated with a `reason`, moving it into the Outdated review state that the documentation-audit listings surface and that its owner is asked to clear via PUT /notes/{noteId}/flag-as-outdated
slite_put_notes_by_noteid_ownerWRITEAssign a note to a `userId` or to a `groupId` -- the owner the documentation-audit listings filter on and whoever Slite asks to re-verify it. One or the other, not both via PUT /notes/{noteId}/owner
slite_put_notes_by_noteid_tiles_by_tileidWRITEPush data into one embedded tile on a note, by tile id: its title, content, link, icon and a coloured status label. The tile is added in the Slite editor first; this replaces what it displays via PUT /notes/{noteId}/tiles/{tileId}
slite_put_notes_by_noteid_verifyWRITEMark a note verified `until` a date, which is what keeps it out of the outdated and verification-expired documentation-audit listings until then via PUT /notes/{noteId}/verify
Often connected alongside
Put Slite behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.