Turn a connector on or off for yourself
const url = 'https://api.asklucy.eu/v1/me/tool-permissions/m365';const options = { method: 'PUT', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"enabled":true}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url https://api.asklucy.eu/v1/me/tool-permissions/m365 \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "enabled": true }'The connector’s Enabled switch: off, Lucy uses none of its tools for you, whatever each tool’s permission, and
your per-tool settings stay for when you turn it back on. Your connection (sign-in) stays too. Audited as
tool.permission_changed (target <server>.*).
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Example
m365The tool server, a connector (m365) or local (local access).
Request Bodyrequired
Section titled “Request Bodyrequired”object
Example generated
{ "enabled": true}Responses
Section titled “Responses”OK
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
{ "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" ] } ]}The request is invalid; errors lists what’s wrong.
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.
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.
No such object in your organization.
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.