{"openapi":"3.1.0","info":{"title":"Ace API","version":"1.0.0","description":"Connect 1,600+ apps (Gmail, Slack, GitHub, Notion, HubSpot, Google Sheets, Salesforce, Shopify…) to an Ace account, then find and run their actions from your own code. The same connections work in Ace on Mac and iPhone and over MCP at https://tryacee.com/mcp. Create an API key at https://tryacee.com/developers.","contact":{"name":"Ace","url":"https://tryacee.com/developers"}},"servers":[{"url":"https://tryacee.com"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"ace_sk_…","description":"An Ace API key from https://tryacee.com/developers. x-api-key: <key> also works."}},"responses":{"Error":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}}}}}}},"schemas":{"App":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"logo":{"type":["string","null"]},"status":{"enum":["connected","pending","needs_reconnect","not_connected"]},"connectionId":{"type":["string","null"]},"authRequired":{"type":"boolean"},"canConnect":{"type":"boolean"}}},"Tool":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"app":{"type":["string","null"]},"description":{"type":"string"},"input":{"type":"object","description":"JSON Schema of the arguments"},"noAuth":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string"}}}},"Run":{"type":"object","properties":{"ok":{"type":"boolean"},"status":{"enum":["completed","failed","not_connected","input_required"]},"data":{},"error":{"type":"string"},"logId":{"type":["string","null"]}}}}},"paths":{"/api/v1/me":{"get":{"summary":"The account this key belongs to","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Error"}}}},"/api/v1/catalog":{"get":{"summary":"Public app catalog (no key needed)","security":[],"parameters":[{"name":"search","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/apps":{"get":{"summary":"Search apps, with this account's connection status","parameters":[{"name":"search","in":"query","schema":{"type":"string"}},{"name":"connected","in":"query","schema":{"type":"boolean"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":50}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"apps":{"type":"array","items":{"$ref":"#/components/schemas/App"}},"nextCursor":{"type":["string","null"]},"total":{"type":"integer"}}}}}},"401":{"$ref":"#/components/responses/Error"}}}},"/api/v1/apps/{app}":{"get":{"summary":"One app","parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,79}$"},"example":"slack"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/App"}}}}}},"404":{"$ref":"#/components/responses/Error"}}}},"/api/v1/apps/{app}/connect":{"post":{"summary":"Get a sign-in link that connects the app","parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,79}$"},"example":"slack"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"callbackUrl":{"type":"string","format":"uri","description":"https URL to return to after sign-in"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"app":{"type":"string"},"status":{"type":"string"},"url":{"type":["string","null"]},"connectionId":{"type":["string","null"]}}}}}},"409":{"$ref":"#/components/responses/Error"}}}},"/api/v1/apps/{app}/request":{"post":{"summary":"Call any endpoint of a connected app's own API (base URL and connection applied by Ace)","parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,79}$"},"example":"slack"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["method","path"],"properties":{"method":{"enum":["GET","HEAD","POST","PUT","PATCH","DELETE"]},"path":{"type":"string"},"query":{"type":"object"},"body":{}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"status":{"type":"string"},"httpStatus":{"type":["integer","null"]},"data":{}}}}}}}}},"/api/v1/connections":{"get":{"summary":"Connected apps","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"connections":{"type":"array","items":{"$ref":"#/components/schemas/App"}}}}}}}}}},"/api/v1/connections/{connectionId}":{"delete":{"summary":"Disconnect an app","parameters":[{"name":"connectionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"$ref":"#/components/responses/Error"}}}},"/api/v1/tools":{"get":{"summary":"Tools in an app, or matching a query","parameters":[{"name":"app","in":"query","schema":{"type":"string"}},{"name":"query","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":200}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"}},"nextCursor":{"type":["string","null"]}}}}}}}}},"/api/v1/tools/find":{"post":{"summary":"Find tools for a task in plain words","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"task":{"type":"string","maxLength":1000}},"required":["task"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/tools/{tool}":{"get":{"summary":"One tool's full schema","parameters":[{"name":"tool","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9][A-Z0-9_]{1,159}$"},"example":"SLACK_SEND_MESSAGE"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"$ref":"#/components/schemas/Tool"}}}}}},"404":{"$ref":"#/components/responses/Error"}}}},"/api/v1/tools/{tool}/run":{"post":{"summary":"Run a tool in a connected app","parameters":[{"name":"tool","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9][A-Z0-9_]{1,159}$"},"example":"SLACK_SEND_MESSAGE"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}}},"429":{"$ref":"#/components/responses/Error"}}}},"/api/v1/custom-connectors":{"get":{"summary":"Your own connectors (any company's MCP server)","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"summary":"Add a connector: an MCP server (Ace checks it lists its tools with this key) or any REST API from its OpenAPI/Swagger spec (JSON or YAML). Keys are stored encrypted.","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"title":"MCP server","type":"object","required":["name","url"],"properties":{"name":{"type":"string","maxLength":60},"url":{"type":"string","format":"uri","description":"https MCP server address"},"key":{"type":"string","maxLength":4000},"header":{"type":"string","default":"Authorization"}}},{"title":"REST API","type":"object","required":["name","spec"],"properties":{"name":{"type":"string","maxLength":60},"spec":{"type":"string","format":"uri","description":"https address of the OpenAPI or Swagger spec"},"base":{"type":"string","format":"uri","description":"API base address if the spec names none"},"key":{"type":"string","maxLength":4000},"header":{"type":"string","description":"Header or query parameter name","default":"Authorization"},"keyIn":{"enum":["header","query"],"default":"header"}}}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"}}}},"/api/v1/custom-connectors/{id}":{"delete":{"summary":"Remove a connector","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"$ref":"#/components/responses/Error"}}}},"/api/v1/triggers/types":{"get":{"summary":"Events an app can send","parameters":[{"name":"app","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/triggers":{"get":{"summary":"Your triggers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"summary":"Watch an event; Ace POSTs each one to webhookUrl with X-Ace-Signature: sha256=HMAC(signingSecret, X-Ace-Timestamp + '.' + body)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["type","webhookUrl"],"properties":{"type":{"type":"string"},"config":{"type":"object"},"webhookUrl":{"type":"string","format":"uri"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"}}}},"/api/v1/triggers/{id}":{"delete":{"summary":"Stop watching","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"$ref":"#/components/responses/Error"}}}},"/api/v1/events":{"get":{"summary":"The last 50 events","parameters":[{"name":"trigger","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/runs":{"get":{"summary":"This account's 25 most recent runs","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/mcp":{"post":{"summary":"MCP server (Streamable HTTP, JSON-RPC 2.0). Tools: search_apps, connect_app, list_connections, find_tools, get_tool, run_tool.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}