What Lucy's tools may do for you
const url = 'https://api.asklucy.eu/v1/me/tool-permissions';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.asklucy.eu/v1/me/tool-permissions \ --header 'Authorization: Bearer <token>'The tools of your connectors and of local access, grouped by tool server, each with its permission:
allow (Lucy uses it without asking), ask (you approve each call in the chat) or deny (Lucy never sees
it). Your organization sets each tool’s permission (organization); you can make a tool stricter for
yourself (mine), never looser. effective is the stricter of the two, and what Lucy does. These are
yours, for every conversation: there is no per-conversation setting.
Listed: Microsoft 365’s tools for the apps your organization allows, while it is on; local access’s tools
while the organization’s local_files isn’t off (the change tools only with read_write).
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”OK
object
object
custom: a connector an admin added by URL (McpServer).
Everyone’s calls use one account the organization signed in with (“Shared by the organization”).
For custom, the host the calls go to.
The person’s own switch for the whole connector (setMyConnectorSwitch); always true in /org/tool-permissions.
object
The tool server, a connector (m365) or local.
The tool’s name on its server (the model sees <server>.<tool>).
One line on what the tool does, for settings pages.
The connector’s app the tool belongs to (ConnectorApp.id); null for local access.
For local access, whether the tool reads or changes files; null otherwise.
The tool’s MCP annotations the default is read from.
object
It reaches outside the person’s own data, such as other people (sending, inviting).
The server gave annotations (Lucy’s catalog always does). False for a custom server’s tool without any.
What Lucy may do with a tool. allow: it uses the tool without asking. ask: each call waits for the
person’s yes on a card in the chat (Step.approval). deny: the tool is hidden from the model, which
never sees it. Stricter is deny > ask > allow.
What Lucy may do with a tool. allow: it uses the tool without asking. ask: each call waits for the
person’s yes on a card in the chat (Step.approval). deny: the tool is hidden from the model, which
never sees it. Stricter is deny > ask > allow.
An admin set organization; false when it is the tool’s default.
What Lucy may do with a tool. allow: it uses the tool without asking. ask: each call waits for the
person’s yes on a card in the chat (Step.approval). deny: the tool is hidden from the model, which
never sees it. Stricter is deny > ask > allow.
For a custom server’s tool, new or changed since an admin reviewed it; organization is then ask at most.
The values the caller may set: an admin any of the three; a person organization and what is stricter
(only deny when the organization asks, none when it denies).
Example
{ "data": [ { "server": "m365", "name": "Microsoft 365", "kind": "connector", "tools": [ { "server": "m365", "tool": "mail_send", "title": "Send an email", "app": "send_mail", "access": "read", "default": "allow", "organization": "allow", "mine": "allow", "effective": "allow", "choices": [ "allow" ] } ] } ]}Missing, expired or invalid token.
RFC 9457 problem details.
object
For quota-exceeded, the window that is used up.
object
Null for a rolling window that hasn’t started.
organization when the organization’s budget is closer to running out than the member’s own limit.
Field-level problems (400 only).
object
JSON pointer into the request body.
Example
{ "type": "https://docs.asklucy.eu/errors/answer-in-progress", "quota": { "window": "five_hours", "limited_by": "personal", "request": { "status": "pending" } }}Headers
Section titled “Headers”Unique per request; quote it to support.
The token is valid but lacks the role this needs.
RFC 9457 problem details.
object
For quota-exceeded, the window that is used up.
object
Null for a rolling window that hasn’t started.
organization when the organization’s budget is closer to running out than the member’s own limit.
Field-level problems (400 only).
object
JSON pointer into the request body.
Example
{ "type": "https://docs.asklucy.eu/errors/answer-in-progress", "quota": { "window": "five_hours", "limited_by": "personal", "request": { "status": "pending" } }}Headers
Section titled “Headers”Unique per request; quote it to support.