{"openapi":"3.1.0","info":{"title":"Inngest (BYOK) API","version":"0.1.0","description":"Inngest (BYOK) lets an AI assistant read your own Inngest data through the Inngest API with a key you supply (API key (sk-inn-api-...) or environment signing key (signkey-...)). Read-only: 10 tools (get_account, list_apps, get_app, list_functions, get_function, list_runs, get_run, list_function_runs, list_event_runs, list_environments). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-inngest.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-inngest/docs"},"termsOfService":"https://connectorbay.com/byok-inngest/terms"},"servers":[{"url":"https://byok-inngest.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-inngest/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_account":{"post":{"operationId":"get_account","summary":"Show the Inngest account the key belongs to: id, name, email and creation date. Use for \"Which Inngest account is this k","description":"Show the Inngest account the key belongs to: id, name, email and creation date. Use for \"Which Inngest account is this key for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_accountArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_apps":{"post":{"operationId":"list_apps","summary":"List the apps of the key's environment with function count, last sync, serve method and archived flag. Use for \"Which ap","description":"List the apps of the key's environment with function count, last sync, serve method and archived flag. Use for \"Which apps are synced to my Inngest environment\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to list archived apps instead of active ones.","title":"Archived"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results per page (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the page.cursor value of the previous answer.","title":"Cursor"}},"title":"list_appsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_app":{"post":{"operationId":"get_app","summary":"Get one app with its latest sync status, framework, SDK language and version, error text and function count. Use for \"Wh","description":"Get one app with its latest sync status, framework, SDK language and version, error text and function count. Use for \"When was the Inngest app 'web' last synced and did it succeed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"The app ID as shown in list_apps, for example 'web'.","maxLength":200,"title":"App Id","type":"string"}},"required":["app_id"],"title":"get_appArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_functions":{"post":{"operationId":"list_functions","summary":"List the functions of an app with slug, triggers, paused and archived flags and configuration. Use for \"What functions d","description":"List the functions of an app with slug, triggers, paused and archived flags and configuration. Use for \"What functions does the Inngest app 'web' have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"The app ID as shown in list_apps.","maxLength":200,"title":"App Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results per page (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the page.cursor value of the previous answer.","title":"Cursor"}},"required":["app_id"],"title":"list_functionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_function":{"post":{"operationId":"get_function","summary":"Get one function's configuration: triggers, concurrency, rate limit, throttle, debounce, retries, priority and failure h","description":"Get one function's configuration: triggers, concurrency, rate limit, throttle, debounce, retries, priority and failure handler. Use for \"How is the Inngest function send-email configured\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"The app ID, for example 'web'.","maxLength":200,"title":"App Id","type":"string"},"function_id":{"description":"The function ID or slug, from list_functions.","maxLength":200,"title":"Function Id","type":"string"}},"required":["app_id","function_id"],"title":"get_functionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_runs":{"post":{"operationId":"list_runs","summary":"List function runs in the environment, newest first by default, with status, function, timing, duration and what trigger","description":"List function runs in the environment, newest first by default, with status, function, timing, duration and what triggered them (outputs are not returned). Use for \"Which Inngest function runs failed recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"time_field":{"anyOf":[{"enum":["queuedAt","startedAt","endedAt"],"type":"string"},{"type":"null"}],"default":null,"description":"Timestamp used for filtering and ordering: queuedAt, startedAt or endedAt (default queuedAt).","title":"Time Field"},"app_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs of this single app ID.","title":"App Id"},"function_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs of this single function ID.","title":"Function Id"},"window_start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs from this time on, ISO 8601 (for example 2026-10-01T00:00:00Z).","title":"Window Start"},"window_end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs up to this time, ISO 8601.","title":"Window End"},"order":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction by the chosen time field: ASC or DESC (default DESC).","title":"Order"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results per page (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the page.cursor value of the previous answer.","title":"Cursor"}},"title":"list_runsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_run":{"post":{"operationId":"get_run","summary":"Get the summary of one function run: status, function, timing, duration and trigger (output is not returned). Use for \"W","description":"Get the summary of one function run: status, function, timing, duration and trigger (output is not returned). Use for \"What is the status of Inngest run 01JABC\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"run_id":{"description":"The run ID (ULID), from list_runs.","maxLength":200,"title":"Run Id","type":"string"}},"required":["run_id"],"title":"get_runArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_function_runs":{"post":{"operationId":"list_function_runs","summary":"List runs of one function with status, timing and trigger, with optional time window and order. Use for \"Show the latest","description":"List runs of one function with status, timing and trigger, with optional time window and order. Use for \"Show the latest runs of the Inngest function send-email\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"The app ID, for example 'web'.","maxLength":200,"title":"App Id","type":"string"},"function_id":{"description":"The function ID or slug, from list_functions.","maxLength":200,"title":"Function Id","type":"string"},"window_start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs from this time on, ISO 8601 (for example 2026-10-01T00:00:00Z).","title":"Window Start"},"window_end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs up to this time, ISO 8601.","title":"Window End"},"order":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction by the chosen time field: ASC or DESC (default DESC).","title":"Order"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results per page (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the page.cursor value of the previous answer.","title":"Cursor"}},"required":["app_id","function_id"],"title":"list_function_runsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_event_runs":{"post":{"operationId":"list_event_runs","summary":"List the function runs triggered by one event ID. Use for \"Which Inngest runs did event 01JEVT start\".","description":"List the function runs triggered by one event ID. Use for \"Which Inngest runs did event 01JEVT start\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"The internal event ID (ULID).","maxLength":200,"title":"Event Id","type":"string"},"limit":{"anyOf":[{"maximum":40,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results per page (1 to 40, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the page.cursor value of the previous answer.","title":"Cursor"}},"required":["event_id"],"title":"list_event_runsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_environments":{"post":{"operationId":"list_environments","summary":"List the account's custom environments with type (production, test or branch) and archived flag. Use for \"What environme","description":"List the account's custom environments with type (production, test or branch) and archived flag. Use for \"What environments does my Inngest account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results per page (1 to 250, default 50).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the page.cursor value of the previous answer.","title":"Cursor"}},"title":"list_environmentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}