{"openapi":"3.1.0","info":{"title":"Loxo (BYOK) API","version":"0.1.0","description":"Loxo (BYOK) lets an AI assistant read your own Loxo data through the Loxo API with a key you supply (Loxo API token). Read-only: 12 tools (list_jobs, get_job, list_companies, get_company, list_job_statuses, list_job_types, list_job_categories, list_seniority_levels, list_company_types, list_workflows, list_activity_types, list_agencies). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-loxo.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-loxo/docs"},"termsOfService":"https://connectorbay.com/byok-loxo/terms"},"servers":[{"url":"https://byok-loxo.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-loxo/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_jobs":{"post":{"operationId":"list_jobs","summary":"Search and list jobs (recruiting searches, requisitions or openings). The query uses Lucene syntax, for example title:\"a","description":"Search and list jobs (recruiting searches, requisitions or openings). The query uses Lucene syntax, for example title:\"account executive\" AND company_name:acme. The answer is the object as Loxo returns it, shortened to fit. Use for \"Which published jobs does my Loxo agency have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text in Lucene syntax; plain words match title, company name, description and address.","title":"Query"},"published":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only published jobs, false for only unpublished ones.","title":"Published"},"status":{"anyOf":[{"enum":["active","inactive"],"type":"string"},{"type":"null"}],"default":null,"description":"Only active or inactive jobs.","title":"Status"},"job_status_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only jobs with this job status ID, from list_job_statuses.","title":"Job Status Id"},"job_type_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only jobs with this job type ID, from list_job_types.","title":"Job Type Id"},"remote_work_allowed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only jobs that allow remote work.","title":"Remote Work Allowed"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many jobs to return per page.","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["agency_slug"],"title":"list_jobsArguments","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_job":{"post":{"operationId":"get_job","summary":"Get one job by ID with its details. The answer is the object as Loxo returns it, shortened to fit. Use for \"Show me Loxo","description":"Get one job by ID with its details. The answer is the object as Loxo returns it, shortened to fit. Use for \"Show me Loxo job 1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"},"job_id":{"description":"Numeric ID of the job, from list_jobs.","title":"Job Id","type":"integer"}},"required":["agency_slug","job_id"],"title":"get_jobArguments","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_companies":{"post":{"operationId":"list_companies","summary":"Search and list companies (clients, employers) in the Loxo CRM. Query uses Lucene syntax. Pages with a scroll cursor. Th","description":"Search and list companies (clients, employers) in the Loxo CRM. Query uses Lucene syntax. Pages with a scroll cursor. The answer is the object as Loxo returns it, shortened to fit. Use for \"Which client companies are in my Loxo CRM\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text in Lucene syntax; plain words match name, emails, phones, URL and address.","title":"Query"},"company_type_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only companies of this type ID, from list_company_types.","title":"Company Type Id"},"company_global_status_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only companies with this global status ID.","title":"Company Global Status Id"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many companies to return per page.","title":"Per Page"},"scroll_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer to fetch the next page.","title":"Scroll Id"}},"required":["agency_slug"],"title":"list_companiesArguments","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_company":{"post":{"operationId":"get_company","summary":"Get one company by ID with its details. The answer is the object as Loxo returns it, shortened to fit. Use for \"Show me ","description":"Get one company by ID with its details. The answer is the object as Loxo returns it, shortened to fit. Use for \"Show me Loxo company 55\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"},"company_id":{"description":"Numeric ID of the company, from list_companies.","title":"Company Id","type":"integer"}},"required":["agency_slug","company_id"],"title":"get_companyArguments","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_job_statuses":{"post":{"operationId":"list_job_statuses","summary":"List the job statuses, such as open, closed or on hold. The answer is the object as Loxo returns it, shortened to fit. U","description":"List the job statuses, such as open, closed or on hold. The answer is the object as Loxo returns it, shortened to fit. Use for \"What job statuses does Loxo use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"}},"required":["agency_slug"],"title":"list_job_statusesArguments","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_job_types":{"post":{"operationId":"list_job_types","summary":"List the job types, such as full-time, contract or temporary. The answer is the object as Loxo returns it, shortened to ","description":"List the job types, such as full-time, contract or temporary. The answer is the object as Loxo returns it, shortened to fit. Use for \"What job types does Loxo use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"}},"required":["agency_slug"],"title":"list_job_typesArguments","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_job_categories":{"post":{"operationId":"list_job_categories","summary":"List the job categories used to classify job openings. The answer is the object as Loxo returns it, shortened to fit. Us","description":"List the job categories used to classify job openings. The answer is the object as Loxo returns it, shortened to fit. Use for \"Which job categories exist in Loxo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"}},"required":["agency_slug"],"title":"list_job_categoriesArguments","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_seniority_levels":{"post":{"operationId":"list_seniority_levels","summary":"List the seniority levels used for candidates and jobs. The answer is the object as Loxo returns it, shortened to fit. U","description":"List the seniority levels used for candidates and jobs. The answer is the object as Loxo returns it, shortened to fit. Use for \"Which seniority levels does Loxo have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"}},"required":["agency_slug"],"title":"list_seniority_levelsArguments","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_company_types":{"post":{"operationId":"list_company_types","summary":"List the company types, such as client, vendor or competitor. The answer is the object as Loxo returns it, shortened to ","description":"List the company types, such as client, vendor or competitor. The answer is the object as Loxo returns it, shortened to fit. Use for \"What company types are defined in Loxo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"}},"required":["agency_slug"],"title":"list_company_typesArguments","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_workflows":{"post":{"operationId":"list_workflows","summary":"List the agency workflows (the pipeline stage setups used for jobs). The answer is the object as Loxo returns it, shorte","description":"List the agency workflows (the pipeline stage setups used for jobs). The answer is the object as Loxo returns it, shortened to fit. Use for \"Which hiring workflows are configured in Loxo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"}},"required":["agency_slug"],"title":"list_workflowsArguments","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_activity_types":{"post":{"operationId":"list_activity_types","summary":"List the activity types used to log calls, emails and meetings, optionally for one workflow. The answer is the object as","description":"List the activity types used to log calls, emails and meetings, optionally for one workflow. The answer is the object as Loxo returns it, shortened to fit. Use for \"Which activity types can I log in Loxo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"},"workflow_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only activity types of this workflow ID.","title":"Workflow Id"}},"required":["agency_slug"],"title":"list_activity_typesArguments","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_agencies":{"post":{"operationId":"list_agencies","summary":"List the current agency and its active child agencies. The answer is the object as Loxo returns it, shortened to fit. Us","description":"List the current agency and its active child agencies. The answer is the object as Loxo returns it, shortened to fit. Use for \"Which agencies are in my Loxo account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agency_slug":{"description":"Your Loxo agency slug, the name in your Loxo address, for example 'acme-recruiting'.","maxLength":100,"title":"Agency Slug","type":"string"}},"required":["agency_slug"],"title":"list_agenciesArguments","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}}}}