{"openapi":"3.1.0","info":{"title":"Memfault (BYOK) API","version":"0.1.0","description":"Memfault (BYOK) lets an AI assistant read your own Memfault data through the Memfault API with a key you supply (Memfault organization auth token (starts with oat_; an Administrator creates it under Admin, Organization Auth Tokens)). Read-only: 12 tools (list_projects, get_project, list_devices, get_device, list_releases, get_release, list_cohorts, list_cohort_devices, list_deployments,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-memfault.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-memfault/docs"},"termsOfService":"https://connectorbay.com/byok-memfault/terms"},"servers":[{"url":"https://byok-memfault.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-memfault/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/list_projects":{"post":{"operationId":"list_projects","summary":"List the projects in an organization with name, slug, platform, OS and device count. The project client key is not retur","description":"List the projects in an organization with name, slug, platform, OS and device count. The project client key is not returned. Use for \"Which Memfault projects does my organization have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["organization_slug"],"title":"list_projectsArguments","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_project":{"post":{"operationId":"get_project","summary":"Get one project: name, platform, OS, device count and dates. The project client key is not returned. Use for \"How many d","description":"Get one project: name, platform, OS, device count and dates. The project client key is not returned. Use for \"How many devices does Memfault project sensor-fw have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"project_slug":{"description":"Memfault project slug, as in your Memfault URLs or from list_projects.","maxLength":128,"title":"Project Slug","type":"string"}},"required":["organization_slug","project_slug"],"title":"get_projectArguments","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_devices":{"post":{"operationId":"list_devices","summary":"List the devices in a project with serial number, hardware version, cohort, last seen time, last seen release and latest","description":"List the devices in a project with serial number, hardware version, cohort, last seen time, last seen release and latest install. Use for \"Which devices in my Memfault project were seen most recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"project_slug":{"description":"Memfault project slug, as in your Memfault URLs or from list_projects.","maxLength":128,"title":"Project Slug","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["organization_slug","project_slug"],"title":"list_devicesArguments","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_device":{"post":{"operationId":"get_device","summary":"Get one device by serial number: hardware version, cohort, last seen release, latest install and latest trace. Use for \"","description":"Get one device by serial number: hardware version, cohort, last seen release, latest install and latest trace. Use for \"Show Memfault device SN-0001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"project_slug":{"description":"Memfault project slug, as in your Memfault URLs or from list_projects.","maxLength":128,"title":"Project Slug","type":"string"},"device_serial":{"description":"Device serial number from list_devices.","maxLength":128,"title":"Device Serial","type":"string"}},"required":["organization_slug","project_slug","device_serial"],"title":"get_deviceArguments","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_releases":{"post":{"operationId":"list_releases","summary":"List the firmware releases of a project with version, revision, minimum version, device count, notes and artifact names.","description":"List the firmware releases of a project with version, revision, minimum version, device count, notes and artifact names. Use for \"Which firmware releases exist in my Memfault project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"project_slug":{"description":"Memfault project slug, as in your Memfault URLs or from list_projects.","maxLength":128,"title":"Project Slug","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["organization_slug","project_slug"],"title":"list_releasesArguments","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_release":{"post":{"operationId":"get_release","summary":"Get one firmware release by version: revision, device count, notes and artifacts. Use for \"Show Memfault release 1.4.0\".","description":"Get one firmware release by version: revision, device count, notes and artifacts. Use for \"Show Memfault release 1.4.0\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"project_slug":{"description":"Memfault project slug, as in your Memfault URLs or from list_projects.","maxLength":128,"title":"Project Slug","type":"string"},"release_version":{"description":"Release version, for example 1.4.0 (a semantic version).","maxLength":128,"title":"Release Version","type":"string"}},"required":["organization_slug","project_slug","release_version"],"title":"get_releaseArguments","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_cohorts":{"post":{"operationId":"list_cohorts","summary":"List the cohorts (device groups that receive releases together) with name, slug, device count and last deployment. Use f","description":"List the cohorts (device groups that receive releases together) with name, slug, device count and last deployment. Use for \"Which device cohorts are in my Memfault project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"project_slug":{"description":"Memfault project slug, as in your Memfault URLs or from list_projects.","maxLength":128,"title":"Project Slug","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["organization_slug","project_slug"],"title":"list_cohortsArguments","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_cohort_devices":{"post":{"operationId":"list_cohort_devices","summary":"List the devices in one cohort with serial number, hardware version and last seen time. Use for \"Which devices are in th","description":"List the devices in one cohort with serial number, hardware version and last seen time. Use for \"Which devices are in the Memfault beta cohort\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"project_slug":{"description":"Memfault project slug, as in your Memfault URLs or from list_projects.","maxLength":128,"title":"Project Slug","type":"string"},"cohort_slug":{"description":"Cohort slug from list_cohorts.","maxLength":128,"title":"Cohort Slug","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["organization_slug","project_slug","cohort_slug"],"title":"list_cohort_devicesArguments","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_deployments":{"post":{"operationId":"list_deployments","summary":"List release deployments with cohort, release, rollout percent, status, type and who deployed. Use for \"Which Memfault d","description":"List release deployments with cohort, release, rollout percent, status, type and who deployed. Use for \"Which Memfault deployments are rolling out\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"project_slug":{"description":"Memfault project slug, as in your Memfault URLs or from list_projects.","maxLength":128,"title":"Project Slug","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["organization_slug","project_slug"],"title":"list_deploymentsArguments","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_issues":{"post":{"operationId":"list_issues","summary":"List crash and error issues with title, message, status, trace and device counts, first and last seen and the releases t","description":"List crash and error issues with title, message, status, trace and device counts, first and last seen and the releases they appear in. Use for \"What are the open crash issues in my Memfault project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"project_slug":{"description":"Memfault project slug, as in your Memfault URLs or from list_projects.","maxLength":128,"title":"Project Slug","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["organization_slug","project_slug"],"title":"list_issuesArguments","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_issue":{"post":{"operationId":"get_issue","summary":"Get one crash or error issue with counts, status, first and last seen and affected releases. Use for \"Show Memfault issu","description":"Get one crash or error issue with counts, status, first and last seen and affected releases. Use for \"Show Memfault issue 77\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"project_slug":{"description":"Memfault project slug, as in your Memfault URLs or from list_projects.","maxLength":128,"title":"Project Slug","type":"string"},"issue_id":{"description":"Issue id (a number) from list_issues.","maxLength":20,"title":"Issue Id","type":"string"}},"required":["organization_slug","project_slug","issue_id"],"title":"get_issueArguments","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_installs":{"post":{"operationId":"list_installs","summary":"List firmware installs on devices with device serial, release, status and install times. Use for \"Which devices installe","description":"List firmware installs on devices with device serial, release, status and install times. Use for \"Which devices installed a new release recently in Memfault\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Memfault organization slug (letters, digits, dash, underscore), as in your Memfault URLs.","maxLength":128,"title":"Organization Slug","type":"string"},"project_slug":{"description":"Memfault project slug, as in your Memfault URLs or from list_projects.","maxLength":128,"title":"Project Slug","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["organization_slug","project_slug"],"title":"list_installsArguments","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}}}}