Test the connection and list its tools again
const url = 'https://api.asklucy.eu/v1/org/mcp-servers/mcp_8Qk2LmN4Rt7Wx1Yz3Aa5/test';const options = {method: 'POST', 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 POST \ --url https://api.asklucy.eu/v1/org/mcp-servers/mcp_8Qk2LmN4Rt7Wx1Yz3Aa5/test \ --header 'Authorization: Bearer <token>'Connects now, lists the tools and keeps them. A tool whose description, input schema or annotations
changed since an admin last reviewed it is changed: it stays at ask (or stricter) for everyone, and is
denied to agents, until an admin reviews it (reviewOrgMcpServerTools). New tools are listed as changed
too. The answer is 200 whatever the server said: see status and last_error.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Example
mcp_8Qk2LmN4Rt7Wx1Yz3Aa5Responses
Section titled “Responses”OK
object
The tool server’s name, the prefix of its tools for the model and in tool permissions (ToolPermission.server). Unique in the organization.
How Lucy signs in to the server. Never the secret itself.
object
none: no sign-in. shared: “Shared by the organization”: one credential an admin gave, for everyone’s
calls (on your own server: your key). oauth: each person (and each agent) signs in at the server
themselves (startMcpConnection), with the MCP authorization spec.
For shared, the header the credential goes in, e.g. Authorization or X-API-Key. Shown to the server’s owner (an admin for the organization’s, you for your own); members don’t get the organization’s.
For shared, the credential’s last four characters, e.g. …a1b2.
Why the last test failed, in a sentence (never the server’s whole answer).
object
The tool’s name on the server (the model sees <server>.<name>).
As the server describes it to the model (cut at 2,000 characters here).
The arguments the server asks for (JSON Schema).
object
object
New, or its description, schema or annotations changed since an admin last reviewed it. It stays at ask or stricter, and denied to agents, until reviewed.
Your own server (createMcpServer), not the organization’s.
Example
{ "id": "mcp_8Qk2LmN4Rt7Wx1Yz3Aa5", "name": "Acme CRM", "server": "acme_crm", "url": "https://mcp.acme.example/mcp", "auth": { "type": "none", "header": "Authorization" }, "status": "untested", "connection": { "status": "active" }, "created_by": { "kind": "person" }}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.
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.