{"openapi":"3.1.0","info":{"title":"Campfire (BYOK) API","version":"0.1.0","description":"Campfire (BYOK) lets an AI assistant read your own Campfire data through the Campfire API with a key you supply (Campfire API key). Read-only: 10 tools (list_invoices, list_bills, list_vendors, list_accounts, list_departments, list_entities, list_budgets, list_fixed_assets, list_contracts, get_trial_balance). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-campfire.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-campfire/docs"},"termsOfService":"https://connectorbay.com/byok-campfire/terms"},"servers":[{"url":"https://byok-campfire.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-campfire/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_invoices":{"post":{"operationId":"list_invoices","summary":"List customer invoices with number, customer name, status, total, paid and due amounts, invoice and due dates and the en","description":"List customer invoices with number, customer name, status, total, paid and due amounts, invoice and due dates and the entity. Customer emails and addresses are not returned. Use for \"Which Campfire invoices are past due\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["open","unpaid","paid","partially_paid","past_due","current","scheduled","sent","uncollectible","voided"],"type":"string"},{"type":"null"}],"default":null,"description":"Invoice status filter.","title":"Status"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items dated on or after this day, YYYY-MM-DD.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items dated on or before this day, YYYY-MM-DD.","title":"End Date"},"invoice_number":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Exact invoice number.","title":"Invoice Number"},"q":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over the resource's text fields.","title":"Q"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, prefix with '-' for descending order, for example '-invoice_date'.","title":"Sort"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"}},"title":"list_invoicesArguments","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_bills":{"post":{"operationId":"list_bills","summary":"List vendor bills (accounts payable) with vendor, status, amounts, bill and due dates. Use for \"Which Campfire vendor bi","description":"List vendor bills (accounts payable) with vendor, status, amounts, bill and due dates. Use for \"Which Campfire vendor bills are still unpaid\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["open","unpaid","paid","partially_paid","past_due","current","needs_approval","payment_pending","voided"],"type":"string"},{"type":"null"}],"default":null,"description":"Bill status filter.","title":"Status"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items dated on or after this day, YYYY-MM-DD.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items dated on or before this day, YYYY-MM-DD.","title":"End Date"},"q":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over the resource's text fields.","title":"Q"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, prefix with '-' for descending order, for example '-invoice_date'.","title":"Sort"},"last_modified_at__gte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or after this ISO 8601 timestamp.","title":"Last Modified At  Gte"},"last_modified_at__lte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or before this ISO 8601 timestamp.","title":"Last Modified At  Lte"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"}},"title":"list_billsArguments","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_vendors":{"post":{"operationId":"list_vendors","summary":"List vendors and customers with name, type, status, country and 1099 flag. Contact details, tax ids and notes are not re","description":"List vendors and customers with name, type, status, country and 1099 flag. Contact details, tax ids and notes are not returned. Use for \"Which vendors does my company have in Campfire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"vendor_type":{"anyOf":[{"enum":["customer","vendor"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to customers or vendors.","title":"Vendor Type"},"q":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over the resource's text fields.","title":"Q"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, prefix with '-' for descending order, for example '-invoice_date'.","title":"Sort"},"include_inactive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Also return inactive items.","title":"Include Inactive"},"last_modified_at__gte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or after this ISO 8601 timestamp.","title":"Last Modified At  Gte"},"last_modified_at__lte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or before this ISO 8601 timestamp.","title":"Last Modified At  Lte"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"}},"title":"list_vendorsArguments","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_accounts":{"post":{"operationId":"list_accounts","summary":"List the chart of accounts with number, name, type, subtype, status, currency and current balance. Use for \"What account","description":"List the chart of accounts with number, name, type, subtype, status, currency and current balance. Use for \"What accounts are in my Campfire chart of accounts and what are their balances\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"}},"title":"list_accountsArguments","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_departments":{"post":{"operationId":"list_departments","summary":"List departments with code, name, display name and active flag. Use for \"Which departments are set up in Campfire\".","description":"List departments with code, name, display name and active flag. Use for \"Which departments are set up in Campfire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over the resource's text fields.","title":"Q"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, prefix with '-' for descending order, for example '-invoice_date'.","title":"Sort"},"include_inactive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Also return inactive items.","title":"Include Inactive"},"last_modified_at__gte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or after this ISO 8601 timestamp.","title":"Last Modified At  Gte"},"last_modified_at__lte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or before this ISO 8601 timestamp.","title":"Last Modified At  Lte"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"}},"title":"list_departmentsArguments","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_entities":{"post":{"operationId":"list_entities","summary":"List the legal entities with name, currency, fiscal year start, active flag and parent entity. Use for \"Which entities a","description":"List the legal entities with name, currency, fiscal year start, active flag and parent entity. Use for \"Which entities and currencies does my Campfire account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"exclude_adjusting":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Hide adjusting entities.","title":"Exclude Adjusting"},"include_inactive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Also return inactive items.","title":"Include Inactive"}},"title":"list_entitiesArguments","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_budgets":{"post":{"operationId":"list_budgets","summary":"List budgets with name, entity, department, cadence, period count, start and end dates and currency. Use for \"What budge","description":"List budgets with name, entity, department, cadence, period count, start and end dates and currency. Use for \"What budgets exist in Campfire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"entity":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Entity id.","title":"Entity"},"q":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over the resource's text fields.","title":"Q"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, prefix with '-' for descending order, for example '-invoice_date'.","title":"Sort"},"last_modified_at__gte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or after this ISO 8601 timestamp.","title":"Last Modified At  Gte"},"last_modified_at__lte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or before this ISO 8601 timestamp.","title":"Last Modified At  Lte"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"}},"title":"list_budgetsArguments","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_fixed_assets":{"post":{"operationId":"list_fixed_assets","summary":"List fixed assets with name, class, status, purchase date, initial value, salvage value, net book value and depreciation","description":"List fixed assets with name, class, status, purchase date, initial value, salvage value, net book value and depreciation dates. Use for \"What fixed assets do I have and what is their net book value\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"last_modified_at__gte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or after this ISO 8601 timestamp.","title":"Last Modified At  Gte"},"last_modified_at__lte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or before this ISO 8601 timestamp.","title":"Last Modified At  Lte"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"}},"title":"list_fixed_assetsArguments","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_contracts":{"post":{"operationId":"list_contracts","summary":"List revenue contracts with client, entity, total contract value, MRR, deferred revenue, start and end dates and billing","description":"List revenue contracts with client, entity, total contract value, MRR, deferred revenue, start and end dates and billing frequency. Use for \"Which Campfire revenue contracts have the highest MRR\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"last_modified_at__gte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or after this ISO 8601 timestamp.","title":"Last Modified At  Gte"},"last_modified_at__lte":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items modified at or before this ISO 8601 timestamp.","title":"Last Modified At  Lte"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, for paging.","title":"Offset"}},"title":"list_contractsArguments","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_trial_balance":{"post":{"operationId":"get_trial_balance","summary":"Get the trial balance for a period, optionally for one entity or department. Use for \"What does my Campfire trial balanc","description":"Get the trial balance for a period, optionally for one entity or department. Use for \"What does my Campfire trial balance look like for this quarter\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items dated on or after this day, YYYY-MM-DD.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items dated on or before this day, YYYY-MM-DD.","title":"End Date"},"entity":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Entity id.","title":"Entity"},"department":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Department id.","title":"Department"},"income_statement_basis":{"anyOf":[{"enum":["fiscal_ytd","period"],"type":"string"},{"type":"null"}],"default":null,"description":"Income statement basis.","title":"Income Statement Basis"}},"title":"get_trial_balanceArguments","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}}}}