- Brand
- Laabam.One
- Category
- Finance
- Primary Subcategory
- ERP & Operations Resource Tools
Integration details
Description
Read your invoices, cash position and P&L — and draft new customers, invoices and bulk price updates for you to approve inside Laabam.One.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- ERP & Operations Resource Tools
- Secondary Subcategories
- None listed
- Brand
- Laabam.One
- Access
- Account required
- First tracked
- 2026-09-13
- Tool count
- 131
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Laabam.One
Get updates when Laabam.One’s Discoverability Score or category rank changes.
Competing in ChatGPT ERP & Operations Resource Tools
View Category131 tools agents can invoke
A student's lesson history and what they have booked. Use for "how many lessons has Arnab completed", "when is her next lesson", "how many are left on his package", "has he cancelled much". Give a student by name or customer id. Returns counts by status — completed, upcoming, cancelled, awaiting completion — plus their recent and upcoming lessons with dates and instructors, and the balance on any prepaid package. Answer the count from `counts`, not by counting the lists: those are capped at ten each and are context, not the total. Cancelled lessons are reported separately and are NOT included in `completed`. If someone asks simply "how many lessons", say which figure you are giving them — on this platform cancellations are a large share of all bookings.
get-customer-bookings
Add a person to the CRM contacts — a name and a phone number at least, plus whatever else the user gives (email, mobile, company, job title, address, notes, source, salesperson). With `also_customer` true a customer record is created and linked too (it gets a customer number and a ledger account) — only when the user asks for one. An email or number already on another contact is refused, naming who holds it. Tell the user; only if they say to keep both, call again with `keep_alongside` set to that contact's id. Marketing consent is never set here. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
create-contact
Add one of the company's own bank accounts to Laabam.One, with its ledger account, and its opening balance if one is given (posted against opening-balance equity). Depending on the company's setting it is either made at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Give the name the company uses for it, the bank, the account number and branch code (IFSC, BSB or SWIFT) as printed on a cheque or statement. An overdrawn opening balance cannot be set here — add the account at zero and enter it in Laabam.One. This records an account; it never connects to the bank or moves money. Supply an idempotency_key you generate once and reuse on a retry.
create-bank-account
Add a rule that categorises bank statement lines to a ledger account (code or exact name): a name, the account, optionally the bank account it is for (else every bank account), and `match` — one or more {field: description | counterparty | upi | reference, operator: contains | equals | starts_with | ends_with, value}. A line matching ANY of them is categorised, in either direction (money in or out). It takes effect on statements imported from now on, and on waiting lines when Apply rules is run on the statement screen; nothing is posted until entries are created from the lines. The preview counts the waiting lines it would match. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
add-bank-rule
Add an entry to one of the product lists: a `category` (optionally under a parent category — two levels at most), a `brand`, a `unit` of measure (with its short name, e.g. "Box" / "box", whether it is for products, services or both, and how many decimal places a quantity may have) or a `manufacturer` (with optional contact details and GSTIN). A name already on the list is refused, so nothing is filed under a duplicate. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
add-catalogue-entry
Add a ledger account to the chart of accounts: a code, a name, and its type (asset, liability, equity, revenue, expense) — or a parent account (by code or name), whose type it takes. Use get-accounts first; if the code is left out, this answers with the codes nearby so the user can pick one. Opening balances are not set here — use set-opening-balances. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
create-account
Add an asset to the asset register — a laptop, vehicle, machine, furniture: its name, the purchase date and price, and optionally its category, serial / model number, manufacturer, location, useful life (default 5 years), salvage value, condition (excellent, good, fair, poor) and the employee it is given to. The asset number is assigned on saving. Optional ledger accounts (asset, accumulated depreciation, depreciation expense) by code or name. This registers the asset only — nothing is posted to the books; its purchase is entered as a bill or expense. Depreciation and disposal are done on the asset screen in Laabam.One. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
add-asset
Add an expense category (e.g. "Vehicle fuel"), optionally under a parent category, with a short code and a description. It gets its own ledger account under the expense account named in `parent_account` (code or exact name; default: the company's general expense account), so its spend shows under its own name in the profit & loss. A name already on the list is refused. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
add-expense-category
Add a milestone to a project, or change one. Give the project (code or name) and the milestone's name; if a milestone of that name exists in the project it is changed, otherwise one is added. Optionally a due date (YYYY-MM-DD), a description and a status (one of the company's milestone statuses, e.g. pending, in_progress, completed). Only in a project the user can open. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
set-milestone
Add recipients to an existing DRAFT SMS campaign. Depending on the company's setting they are added at once, with the user's confirmation of this call as the approval, or wait for approval in Laabam.One. It cannot send, and nothing here can send. Call `get-sms-campaigns` first for the campaign id and its template. Each recipient needs `phone`, optionally `name`, and `variables` — the values for the template's {#var#} slots IN THE ORDER THEY APPEAR in the template's content. The count must match exactly; rows that do not are rejected and reported rather than sent half-filled. Up to 300 rows per call. For a larger sheet, split it and use a DIFFERENT idempotency_key for each batch — reusing one returns the first batch instead of adding the next. A phone number can appear only ONCE per campaign: a repeat is silently dropped by the database, so that person receives nothing. Duplicates are reported back — tell the user, do not quietly proceed, especially for payroll where a dropped row means someone is not paid their slip. Do not reformat or "fix" values. Send them as the source has them.
add-sms-campaign-recipients
Adjust this company's stock up or down — goods found in a stock count, damaged or expired stock written off, stock used in-house. One adjustment can cover several products. It moves the quantity on the shelf only; it posts nothing to the ledger. Depending on the company's setting it is either recorded at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. `adjustment_type` is increase or decrease, and `reason` must be one for that direction — increase: purchase, opening_stock, return, transfer_in, other; decrease: consumption, wastage, damage, transfer_out, other. Quantities are in each product's own unit. Products are matched by SKU, then exact name; products with variants, services and IMEI-tracked products are refused — those are adjusted in Laabam.One. Do not use this for goods bought or sold: bills and invoices move stock themselves. Supply an idempotency_key you generate once and reuse on a retry.
adjust-stock
When a driving instructor can take a LESSON. Use for "is Ravi free today", "what lesson times are available on Friday", "when is the earliest she could fit someone in". It reads the school's lesson diary only. Give an instructor by name or id. Without a date it checks today; with `days` it scans forward and returns the days that actually have openings, so you can answer "the nearest slot is Thursday 10:00" rather than just "nothing today". The times come from the same engine the booking widget and the mobile app use, so a slot offered here is one that will actually save. It already accounts for the instructor's working hours, the times they are unavailable and the lessons already booked. A day with no slots carries a `reason` — read it out rather than guessing why. It does NOT book anything. Availability can change between asking and booking, so never tell a user a slot is held.
get-instructor-availability
Propose settling one of a customer's invoices from an ADVANCE they paid earlier — ALWAYS a draft a person approves in Laabam.One, as every payment is. Without `amount` it settles as much as the advance and the invoice allow. Without `advance` it uses their oldest advance with money left on it. Give the customer (number or exact name) and the invoice number. Supply an idempotency_key you generate once and reuse on a retry.
apply-customer-advance
Apply for leave — for the user themself, or (for HR and managers) for another employee: the leave type by name, from and to dates (YYYY-MM-DD), whether it is a half day, and the reason. The application goes to approval; nothing is deducted until it is approved. The preview shows the balance left on that leave type. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
apply-leave
Approve a DRAFT credit note, by its number. Approving posts the reversal to the books, reduces what the customer owes on the invoice and, for returned or defective goods, puts them back in stock. Name what it does back to the user before calling. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
approve-credit-note
Ask for a month's DRAFT salaries (YYYY-MM; every employee, or the ones named) to be approved. Approving posts the salary expense and what is owed to each employee and to PF/ESI/TDS/PT. It ALWAYS waits for a person to approve it in Laabam.One. Nobody is paid by this; pay-salaries records the payment. Supply an idempotency_key you generate once and reuse on a retry.
approve-payroll
Approve or reject a leave application that is still OPEN — name the employee (and the dates, if they have more than one open), or give the application id. Approving takes the days off their leave balance. Nobody approves or rejects their own leave. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
review-leave
Give an asset (by its number, barcode, serial or name) to an employee (name or code), from a date (default today), optionally with an expected return date and a note. If someone else holds it, it is taken back from them first — the preview says who. Not for a disposed or lost asset. To take an asset back, use return-asset; to move it to another place, use transfer-asset. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
assign-asset
This company's cash position: every active bank account — bank name, masked account number and balance — and the total across all of them, in the company's own currency.
get-bank-balance
Report where bank reconciliation stands: each bank account's balance, how many imported transactions are still unmatched, and what has not yet been posted to the accounts. Use it for "is my bank reconciled", "what is left to reconcile", "did the statement import work". Then read the lines themselves with get-bank-statement-lines, and match, exclude or post them with reconcile-bank-statement.
get-bank-reconciliation
The lines of this company's imported bank statements, for reconciling them: date, amount (+ money in, − money out), narration, counterparty and where each stands — unmatched, categorised (an account chosen, not yet posted), excluded, or posted. For an UNMATCHED line it also gives `suggested_account` (what the app would pick) and `can_link_to` — entries already in the books that moved this bank account by exactly that amount; linking to one of those is how a receipt or payment already recorded is reconciled without posting it twice. Use the line `id`s with reconcile-bank-statement. Filter by `bank_account` (as the company names it), `status` and dates. PAGED: keep asking with `offset` until `remaining` is 0 before saying you have them all.
get-bank-statement-lines
Book a lesson for a student with an instructor. Depending on the company's setting it is booked at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Only when `committed` is true is the lesson booked; a draft holds no time — say so. The student and the instructor must both already exist; use `search` or `get-instructor-availability` first. If a name matches more than one person, ask which — do not guess, because a lesson in the wrong diary is worse than a delay. If the time asked for is not free, this returns the nearest alternatives instead of booking. Offer them to the user and call again with the one they pick. The slot is re-checked when the draft is approved, because availability moves. A draft whose slot has gone is refused at that point, so never promise the time is reserved. Price is worked out from the lesson product and the instructor's pricing tier — do not send a price. A lesson with no lesson type and no package is refused: it would be free. To use up a student's prepaid package instead, give its number as `package`. Several lessons for the same student and instructor go in one call: the first in date/start_time, the rest in `more_lessons` (each a date, and its own start_time if it differs). They are booked together or not at all. Refused when the school requires the student to accept its cancellation policy first, or the student owes a cancellation charge — both are for a person in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
create-booking
A quick overview of the business for a period: revenue, expenses and net profit or loss from the posted ledger (the same figures get-profit-loss gives), payments received, outstanding receivables, cash balance, customer count and overdue invoice count. The right first call for "how is my business doing". For a profit and loss STATEMENT — cost of sales, gross profit, expenses by category — call get-profit-loss. It does NOT cover what the company OWES its suppliers. Say that payables are not included rather than implying there are none.
get-business-summary
Move a work order (its number or job card) to planned, in_progress, completed or cancelled. A completed or cancelled work order cannot be reopened. It is completed only once something has been produced against it and nothing is left with the job worker; it is cancelled only while it has no confirmed production and no material with the job worker. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
set-work-order-status
Move one or more sales leads to a different status, or assign them to a salesperson — the lead list's own bulk actions. `action` status (give `status` by name, as get-crm-pipeline lists them, and an optional `note`) or assign (give `assign_to`, a salesperson's name). Name the leads in `leads` by id or exact title; up to 100. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. A lead can be marked Lost only once it has been worked (a call or meeting, a later status, or 15 days old); the result names any that cannot, and they are left as they are. Moving a lead to a WON status also raises its deal — say so before doing it. Recording assignments notifies the salesperson. Supply an idempotency_key you generate once and reuse on a retry.
update-leads
Add a comment to a project work item's discussion, by its reference (e.g. WEB-12), in the user's name. Comments are internal to the team. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
comment-on-work-item
Compare sales between two periods — "this month versus last month", "how are we doing against last year", "is sales up or down". Returns both windows and the difference already computed: never subtract the numbers yourself. If the current period is unfinished the result carries a like_for_like block comparing equal numbers of days — when it is there, lead with it and say the period is not over, because a part month measured against a whole one always looks like a collapse.
compare-sales
Which company this connection is working in. Call it when you need to name the company, or to confirm which one a figure belongs to before reporting it. A CONNECTION REACHES ONLY THE COMPANIES LISTED HERE — the ones a person ticked when the connection was authorised. Often that is one; it can be several. When it is several, pass `company` (a name or id from this list) on any tool to say which one you mean. A tool called without it answers about the company marked `answers_by_default`. Always say which company a figure belongs to — two companies' revenue reported as one number is worse than no answer. If the user asks about a company that is NOT in this list, say it is not connected and that they can add it when authorising the connection in Laabam.One. Do NOT report figures for it, and do not imply you checked it.
list-business-entities
Turn a qualified sales lead into a deal in the pipeline, by its id or exact title. The deal takes the lead's title, expected value, contact, salesperson and source, and starts in the first pipeline stage — or straight in the won stage with `won` true, when the business is already won (that closes the deal today). A lead already converted is refused with its deal. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
convert-lead
Convert a sales document into the next one — a quotation or estimate into an invoice or sales order, a sales order into a delivery note or invoice — by its number. The new document copies the lines exactly; the source is marked converted. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. An invoice made this way takes its goods out of stock at once; it is a DRAFT, posted to the sales ledger when it is sent (send-document) or saved in Laabam.One. `target_type`: invoice, sales_order, delivery_order or proforma_invoice; one the document cannot become is refused with the reason. Supply an idempotency_key you generate once and reuse on a retry.
convert-document
Create a bill of materials: the finished `product` (name or SKU), a name, the quantity it makes (default 1), and its `materials` — each a product, the quantity used and optionally its unit cost (default the purchase price) and waste %. Optionally `operations` (name, and labour / machine cost per unit, minutes, department, workstation), `overheads` (name, amount, per_batch / per_unit / fixed), batch size, rejection % and profit %, and whether it is the product's default BOM. Nothing moves in stock and nothing is posted. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
create-bom
Add a new customer to this company. Depending on the company's setting it is either created at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. When `committed` is true, report the customer number from `result`; when `awaiting_approval` is true, say it is waiting and where. Supply an idempotency_key you generate once for this request and reuse if you retry; calling again with the same key returns the original outcome rather than adding a second. Opening balances are deliberately not accepted here, because setting one posts to the general ledger — set-opening-balances does that.
create-customer
Add a deal to the sales pipeline — an opportunity with a value. Give a `title`, and optionally `value`, `stage` (by name; defaults to the first), `contact` (a CRM contact by exact name or email), `assign_to` (a salesperson) and `expected_close_date`. To turn an existing lead into a deal, use convert-lead instead. Depending on the company's setting it is either made at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
create-deal
Create a sales document for this company — an invoice, quotation, estimate, proforma invoice or sales order — from a photo, PDF or details the user gives you. Depending on the company's setting it is either created at once, with the user's confirmation of this call as the approval, or recorded as a draft a person approves in Laabam.One. The result says which. When `committed` is true it exists: report its number from `result.invoice_number`. When `awaiting_approval` is true, say it is waiting for approval and where (`where_to_approve`), give the reason in `why_awaiting_approval` if there is one, and do not quote a number — none is issued until approval. An invoice is created with status Draft: it is posted to the sales ledger and takes the goods out of stock straight away, but it is not sent to the customer. Quotations, estimates, proforma invoices and sales orders post nothing. The customer must ALREADY exist — call `search` first to find them. If the name does not match, this returns the near matches; ask the user which one rather than guessing. Give the figures exactly as they appear on the source. Do not calculate a tax rate that is not shown, and do not adjust a quantity or price to make a total balance — if the source does not add up, say so and let the person decide. Supply an idempotency_key you generate once and reuse on a retry; the same key returns the original result rather than creating a second document.
create-invoice
This company's customers: search by name, email or phone, list those with money outstanding, or RANK customers by what they have bought. For "which customer has the highest purchase value", "biggest customer" or "top customers", pass filter=top_by_revenue and answer with purchase_value from the first row; the result's ranked_by field says exactly what that figure is. A customer with no invoices is not in the ranking at all, so an empty list means nobody bought in that window. Returns customer details with their outstanding balances.
get-customers
Today's briefing for this company: insights drawn from its own figures — overdue receivables, revenue trends, expense alerts — and a few short rotating tips. It is not a source of tax rates, tax rules or filing deadlines, and it holds no calendar, meetings or schedule — do not call it for those.
get-daily-briefing
Propose deleting a customer receipt recorded by mistake or twice — ALWAYS a draft a person approves in Laabam.One, as every payment is. Approving reverses its voucher and reopens the invoices it settled; credit it left with the customer is taken back. Name it by its receipt number. Refused for a receipt taken at the till (corrected at the till) and one matched to a bank-statement line (unmatch it first). Give a `reason`. Supply an idempotency_key you generate once and reuse on a retry.
void-receipt
Propose deleting a supplier payment recorded by mistake or twice — ALWAYS a draft a person approves in Laabam.One, as every payment is. Approving voids its voucher and reopens the bills it paid; an advance it created is taken back (refused if that advance has since been used against another bill). Name it by its payment number. Refused for one matched to a bank-statement line (unmatch it first). Give a `reason`. Supply an idempotency_key you generate once and reuse on a retry.
void-supplier-payment
Draft a WhatsApp campaign: a name, an approved WhatsApp template (by name), the audience (a contact list and/or a saved segment, by name), and a value for each {{1}}, {{2}}… slot in the template, in order — plain text everyone gets, or a field per person such as {{contact.first_name}} (name, first_name, last_name, company_name, phone, email, city). A media-header template needs a public media_url. It is ONLY a draft: nothing is sent and nothing is scheduled. To send it, use send-whatsapp-campaign, which always waits for a person to approve it in Laabam.One with the cost shown. Supply an idempotency_key you generate once and reuse on a retry.
create-whatsapp-campaign
Create a new SMS campaign as a DRAFT campaign — it can never send one; sending is done by a person in Laabam.One. Depending on the company's setting the draft campaign is created at once, with the user's confirmation of this call as the approval, or waits for approval in Laabam.One — say which, from `committed` or `awaiting_approval`. Call `get-sms-campaigns` first. You MUST name a template_id from that list: this tool refuses without one and returns the choices, because only the user knows which registered template a spreadsheet is for. If an existing DRAFT campaign looks like the same job, this refuses too and names it — ask whether to add recipients to that one instead of creating a second. Pass allow_duplicate=true only after the user has actually said to create a new one. Do NOT send message text. The wording comes from the registered template; anything else is rejected by the operator and charged for. Recipients and their per-row values are added afterwards with `add-sms-campaign-recipients`.
create-sms-campaign
Draft an email campaign: a name, a subject, the body (simple HTML, or plain text with blank lines between paragraphs) and the audience (a contact list and/or a saved segment, by name). Optionally the sender — one of the company's verified sending addresses — a from name and a reply-to address. Each email carries an unsubscribe link automatically. It is ONLY a draft: nothing is sent and nothing is scheduled. To send it, use send-email-campaign, which always waits for a person to approve it in Laabam.One with the cost shown. Supply an idempotency_key you generate once and reuse on a retry.
create-email-campaign
Copy a sales document — invoice, quotation, estimate, sales order, delivery note — into a new DRAFT of the same type, by its number: same customer, lines, charges and terms, dated today, numbered on the same series. Its lines take stock as any new document's do. To change the copy afterwards, the user edits it in Laabam.One. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
duplicate-document
Email a month's payslips (YYYY-MM; every employee, or the ones named) — each to the employee's OWN email address on their record, for approved or paid salaries only. An employee with no email on record is listed and skipped. An email cannot be taken back. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
email-payslips
Ask for leads (ids or exact titles, up to 50) to be enrolled in a CRM nurture sequence (by name). A sequence keeps sending its emails, SMS or WhatsApp messages on its own schedule, so this ALWAYS waits for a person to approve it in Laabam.One, with the steps shown. A lead already active in the sequence is left as it is. Supply an idempotency_key you generate once and reuse on a retry.
enroll-in-sequence
This company's recorded expense entries for a period — today, this week, this month, last month or this year: the total, a breakdown by category with each category's share, and the most recent entries with vendor and payment method. Purchase bills are not expense entries and are not in it; for the expenses in the profit and loss, call get-profit-loss.
get-expenses
Read this company's products so you can reformat them into whatever shape the user needs — a marketplace template, another system's import format, a price list, a stock count sheet. Returns sku, barcode, name, description, HSN/SAC, GST rate, purchase and selling price, MRP and current stock. Paged: the result says how many remain and the offset to continue from. Keep asking until remaining is 0 before telling the user you have the whole catalogue — a partial list presented as complete becomes a price list sent to a customer with products missing. Prices are plain numbers in the company's own currency. Do not convert them, and do not add a currency symbol unless the user asks for one in the output format. The HSN/SAC code and GST rate are what THIS company entered on its own products — not a reference for statutory GST or HSN rates. Never call this to answer "what is the GST rate on X"; that is general knowledge, not this company's records.
export-products
WHICH instructors are free at a time — use when the instructor is not already chosen. For "who can do a lesson Sunday at 10", "anyone free tomorrow afternoon in Dandenong", "who could take this student on Thursday". To check ONE named instructor, use get-instructor-availability instead. Needs a date and a time. Everything else narrows or ranks: - `lesson_type` — ALWAYS GIVE THIS IF YOU KNOW IT. It sets how long a gap is searched for, and without it the search falls back to the company's calendar interval, which on some schools is 15 minutes — so instructors come back "free" who cannot fit a real lesson. It is ALSO how transmission is chosen: automatic and manual are separate lesson products, not a separate field. `checked_for_minutes` in the reply says what was actually searched. - `student_name` — puts the student's own past instructors first, and uses their address to work out where the lesson is. Give it whenever you know who the lesson is for. - `suburb` / `postcode` / `test_centre` — where the lesson is, when it is not the student's own address. - `tolerance_minutes` — how far from the time asked for an offer may sit. Default 30. Each instructor comes back with the free slot nearest the time asked for and how far off it is, so you can say "Ravi at 10:00, or Priya 15 minutes later". ⚠ READ `covers_area` PER ROW. false does NOT mean they do not serve the area — it means they have stated no service area at all, and they are shown rather than hidden. Anyone who HAS stated areas and does not cover this place is already gone from the list. ⚠ `counts.capped` true means more instructors are free than are listed. Never say "only these are available" when it is set. This books nothing and holds nothing. To book, use create-booking.
search-available-instructors
Import contacts into the CRM — up to 500 rows a call, each with any of first_name, last_name (or a single `name`), email, mobile, phone, company_name, job_title, city, state, country, postal_code, address, website, notes — optionally into a campaign contact `list` (by name). Someone already in the CRM (same email or number) is not duplicated: their blank fields are filled in from the row, and nothing they already have is overwritten. A row matching several people is held for review. The preview is the importer's own dry run: how many are created, updated, unchanged, skipped and held. Marketing consent is never set by an import. Depending on the company's setting it is either done at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One. Supply an idempotency_key you generate once and reuse on a retry.
import-crm-contacts
Import bank statement transactions you have read from a PDF, CSV, spreadsheet or screenshot. Depending on the company's setting a batch of up to 50 rows is either imported at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One; a bigger batch always waits. Report which from `committed` or `awaiting_approval`, and never call a draft imported. Name the account in `bank_account` — its name, its bank, or the last digits of its number. Call get-bank-balance first if you are not sure which accounts exist. If the name is ambiguous the tool returns the candidates instead of guessing; ask the user which. Each transaction needs `date` (YYYY-MM-DD) and an amount. Give the amount EITHER as a signed `amount` — positive for money in, negative for money out — OR as separate `credit` and `debit` values. A row carrying both a signed amount and a credit/debit pair is rejected, because the two disagreeing is not something to resolve by picking one. Also send, whenever the statement shows them: `description` (the full narration, exactly as printed — do not tidy it), `reference` (cheque or UTR number) and `balance` (the running balance after the row). ⚠ ALWAYS SEND `balance` WHEN THE STATEMENT HAS A BALANCE COLUMN. It is what distinguishes two genuine transactions that are identical in every other respect — the same charge levied twice in one day — from the same row printed twice. Without it, the second of such a pair is treated as a duplicate and dropped. Do not convert amounts, do not round them, and do not reorder the rows: send them in the order the statement prints them. Transactions already held for this account are reported as duplicates and NOT imported again, so re-sending an overlapping period is safe. What this does NOT do: it does not reconcile, categorise, or post anything to the ledger. The transactions arrive unmatched, and a person matches them against invoices and bills in Laabam.One. Do not offer to do that part here. Up to 400 rows per call. For a longer period, split it by month and use a DIFFERENT idempotency_key for each batch.
import-bank-statement
Import a list of customers from a spreadsheet, an export from another system, or details the user gives you. Depending on the company's setting a batch of up to 50 rows is either imported at once, with the user's confirmation of this call as the approval, or kept as a draft a person approves in Laabam.One; a bigger batch always waits. Report which from `committed` or `awaiting_approval`, and never call a draft imported. ⚠ A ROW MATCHING AN EXISTING CUSTOMER UPDATES IT. Matching is by GST number, then by exact name. The draft reports how many rows will create and how many will overwrite an existing customer, and names the ones it will overwrite. Read that count back to the user — before they approve a draft, or as what happened when it was made at once. An import of "new" customers that rewrites 300 existing ones is the thing to warn about. Each row needs at least a `name`. Everything else is optional: email, phone, phone_country_code, company_name, address, area, city, state, postal_code, country, gstin, customer_type, credit_limit, discount, currency_code, bank_account_no, bank_ifsc_code, bank_name, bank_branch_name, customer_group, website, tags, notes, also_vendor. Send values as they should be stored. Numbers are plain — no currency symbols, no thousands separators; "1,200" is rejected rather than guessed at, because it means 1200 in one country and 1.2 in another. Do not invent a country or a state that the source does not give. Opening balances are deliberately NOT accepted, because importing one posts to the general ledger. If the source has them, import the customers here and tell the user to enter the balances in Laabam.One under Settings → Opening Balances. Up to 500 rows per call. For a longer list, split it and use a DIFFERENT idempotency_key per batch — reusing one returns the first batch's draft instead of staging the next.
import-customers
Laabam.One ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Laabam.One's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Laabam.One alternatives on ChatGPT?
As of 2026-10-25, Laabam.One competes with 101, AllEars.Vet, allmanager, Anthill, APMS.ai, Ask Peasy, Atalayas, Axle Connect and 93 more in ChatGPT ERP & Operations Resource Tools, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.