Skip to main content
Reads rows from a single Sage Intacct object — for example LOCATIONENTITY (entities/locations), DEPARTMENT, GLACCOUNT, CLASS, or VENDOR (vendor lists). Display name follows the registry name. Off by default. This is a generic, read-only engine for the plain-read family: name the object, optionally list fields, optionally add structured filters. It does not replace the tools that carry extra logic — use sage_intacct_get_vendor (fuzzy matching of one vendor), sage_intacct_get_po / sage_intacct_get_receipts_by_po (multi-object joins), or sage_intacct_get_payments (join) for those objects. Typical use is behind a pinned configured-tool wrapper (e.g. an entity-lookup wrapper that binds object=LOCATIONENTITY) so the agent supplies only the lookup value, not the object.

Authentication and enablement

Requires a workspace Sage Intacct integration. company_id, user_id, and user_password are injected from the integration config and are not shown as per-run inputs. Enable the tool and bind the integration.

Inputs

  • object (required) — the Sage Intacct object/integration name. Case-insensitive. Restricted to an allowlist: LOCATIONENTITY, DEPARTMENT, GLACCOUNT, CLASS, VENDOR. Any other object is refused (see limits below).
  • fields — array of field names to return. Omit (or pass ["*"]) for all fields, except on VENDOR, which requires an explicit list (see limits). Field names accept letters, digits, and underscore only. Dotted names (e.g. VENDOR.NAME) are refused: Sage treats them as traversal into a related object, which would reach past the object allowlist.
  • filters — array of { field, operator, value } conditions combined with AND. operator is equals (default) or like (use % wildcards). Field names are validated (letters/digits/underscore, no dots); values are single-quote escaped internally.
  • max_results — default 100, maximum 10,000. Sage returns at most 1,000 rows per page; the tool follows readMore for further pages until it has max_results rows or nothing remains.
  • entity_id — scopes the read to a specific entity in a multi-entity company. Empty reads at the top level.

Output

Matching records as structured rows (one field → value map per record). Metadata carries the returned count, the queried object, Sage’s total_count and num_remaining, and a truncated flag. When num_remaining is greater than zero the result set is incomplete — raise max_results or narrow the filters.

Limits and side effects

  • Read-only. Never creates or modifies records.
  • Object allowlist. Only LOCATIONENTITY, DEPARTMENT, GLACCOUNT, CLASS, and VENDOR may be read. This is a deliberate floor no configuration can widen, so the generic reader cannot be pointed at sensitive objects (employees, contacts, payment/bank records). Adding an object is a reviewed code change.
  • VENDOR field guard. Vendor rows carry tax ids and bank details, so VENDOR refuses an all-fields read and refuses tax and payment fields by name: TAXID, NAME1099 / FORM1099*, ACH*, WIRE*, and anything containing BANK, ROUTING, or ACCOUNTNUMBER. Name the fields you need, e.g. VENDORID, NAME, STATUS, and custom attributes.
  • Paging. One call makes at most 10 Sage requests (10,000 rows / 1,000 per page). An error on any page fails the whole read.
  • Targets plain (flat) objects. Nested/relationship elements more than one level deep are not expanded — use a dedicated get_* tool for objects with line items or joins.
  • Only equals and like operators are supported; other operators return an error.

Expected errors

  • Integration credentials missing (company_id / user_id / user_password).
  • object not provided, or not on the allowlist.
  • VENDOR read without an explicit field list, or naming a tax or payment field.
  • Invalid field name (in fields or a filter field).
  • A filter with a value but no field — rejected outright rather than dropped, so a malformed filter can never silently widen the read to every row.
  • Unsupported filter operator.
  • Sage Intacct API error (e.g. unknown object or field) / no match.