MCP App Store
by KeenEthics

Overview

Wilki brings each organization's operational data into ChatGPT. Authorized users can analyze sales, payments, tax documents, inventory, fleet, farming, weather, and other connected business data without modifying operational records. It does not expose personal contact details: no e-mail addresses, phone numbers or national identifiers for individuals.

Tools

get_agromet_observations

ChatGPT
Devuelve las observaciones horarias mas recientes de las estaciones Agromet seleccionadas. Filtra opcionalmente por station_id o station_name.

get_agromet_observations_history

ChatGPT
Devuelve el historico de observaciones Agromet disponible en la ventana global de hasta 24 horas. Filtra opcionalmente por station_id o station_name.

get_agromet_stations

ChatGPT
Lista las estaciones Agromet seleccionadas para este cliente.

get_aramco_cards

ChatGPT
The client's fuel cards: which vehicle each one belongs to, which fuel it loads, its limit, the current-month consumption and the ESTIMATED balance per fuel. Use it for 'how many cards do we have?', 'which card does the pickup use?', 'how much balance is left?'. ⚠ The balance is a platform estimate (Aramco exposes no balance at all) and the monthly consumption resets on the 1st: it is not available balance.

get_aramco_fuel_consumption

ChatGPT
Fleet fuel consumption at Aramco stations (Chile), AGGREGATED. THIS IS THE TOOL for 'how much did we spend on fuel in July?', 'how many litres of diesel this month?', 'which vehicle burns the most?', 'which station do we refuel at most?', 'where are we paying the highest price per litre?', 'how does spend trend month by month?'. Returns period totals (litres, refuelings, amount and average price per litre), the per-fuel breakdown always, and optionally a breakdown by the group_by dimension. For individual refuelings use get_aramco_refuelings.

get_aramco_refuelings

ChatGPT
Individual refuelings, newest first. Use it for 'when did the pickup last refuel?', 'show me plate X's refuelings in July', 'what did the truck load yesterday?'. Each row carries timestamp, vehicle, fuel, litres, station, commune and —with the accounting permission— price per litre, amount and invoice number. For totals and rankings use get_aramco_fuel_consumption: this tool returns a capped detail list, not sums.

get_asset_status

ChatGPT
Status of the company's assets — vehicles, machinery and implements (family 'mobile') AND buildings, infrastructure, systems and fixed equipment (family 'fixed') — TOGETHER WITH what their telemetry devices are currently reporting. This is the natural way to ask: people think in terms of 'the water tank at the house', 'the field pickup' or 'the well pump', not in terms of sensor ids. Use it for 'how is the water tank', 'where is the pickup right now', 'is anything in trouble', 'what does the tractor's hour meter read'. Returns identity (name, code, plate, class, type, group), operating status, ownership, usage meters, location, document-folder counts and, per linked device, its last reading already interpreted the way the client configured it. Assets whose devices belong to connectors outside this access still report how many devices they have. For document expiry DETAIL (and to evaluate it against a future date) use get_document_expiries; for the device rather than the asset use get_yolink_sensors.

get_cash_movements

ChatGPT
Individual movements from the company's own cash book, newest first: date, account, amount, currency, description, counterparty and category. Use this for 'what did we pay last week', 'show me the movements over 1 million'. For totals use get_cash_summary instead — this one truncates the list but still reports the totals of the whole period. Voided movements and their reversals are excluded.

get_cash_summary

ChatGPT
Totals and breakdown of the company's own cash book (Wilki's Cash Movements tool): money in, money out and expenses over a period, for bank accounts, cards and petty cash. Use this for 'how much did we spend in July', 'what did we spend it on', 'how much did we pay supplier X this year'. Voided movements and their reversals are excluded. IMPORTANT: totals are returned PER CURRENCY and must never be added together. 'sum_out' is money that left the account; 'sum_expense' is the part that is an actual expense — a transfer between the company's own accounts is not an expense and is excluded from it.

get_company_assets

ChatGPT
ALL company assets, in two families. family=mobile are the ones that move: vehicle is road-legal, machine has an engine but does not use public roads (tractor), implement has no engine (trailer, seeder). family=fixed are the ones that sit in a place: building (shed, workshop, warehouse), infrastructure (water tank, fence, road, corral), system (water, irrigation, electrical networks) and fixed_equipment (pump, compressor, boiler, generator). ⚠ With no filter it returns both families: for 'what vehicles do we have' pass family=mobile, or you will count sheds. Carries the VALIDITY STATUS of documents — circulation permit, technical inspection, mandatory insurance (SOAP), policy — evaluated against on_date.

get_company_people

ChatGPT
People registered by the company (Masters → People): own staff (relation=internal) and supplier staff (external). Carries the VALIDITY STATUS of their documents — id card, passport, driver licence — evaluated against on_date. Use it for 'who is <name>' and 'are <person>'s papers in order'. For 'what is expiring' without naming anyone, use get_document_expiries. ⚠ Searched and answered BY NAME: it returns no tax id, e-mail, phone, document number or files, and none of those can be searched on either. They are personal data of someone who is not the party authorising this access, and they are not needed to tell whether something is valid. Two people with the same name are told apart by code (PER-00001).

get_company_suppliers

ChatGPT
Company suppliers (Masters → Suppliers). Answers BOTH WAYS: from name or legal name to tax id ('what is Copec's RUT') and from tax id to name ('who is 76.111.105-1'). search takes part of the name, the legal name, the internal code (PRV-00014) or the RUT in any format. Without search it returns the full list. Every client has this master: it is not something you contract.

get_cross_parlevel_payscan_transactions

ChatGPT
Cross-connector tool: queries PayScan transactions but lets you filter by ParLevel concepts — machine_id, machine_name, location_id or location_name — using the ParLevel↔PayScan device mapping configured for the client. Also supports payment_method (DEBIT/CREDIT/CASH) and card_brand (VISA/MASTERCARD/...) filters. Use this when the user asks about PayScan sales for a specific ParLevel machine (e.g. 'transacciones de la máquina IRAM-TANG en la última hora') or for a ParLevel location (e.g. 'ventas PayScan en sucursal 1 hoy'). Returns the same aggregations as get_payscan_transactions ('summary', 'by_status', 'by_machine', 'by_location', 'by_hour', 'by_payment_method', 'by_card_brand', 'list'). Transactions in 'list' mode are enriched with payment_method, card_brand and ParLevel machine_id, machine_name, location_id and location_name. Window: 1–48h (PayScan retention).

get_document_expiries

ChatGPT
THE TOOL for 'do I have any expired or expiring documents'. Crosses PEOPLE and VEHICLE/MACHINERY documents into one answer, ordered by urgency. Answers 'is the circulation permit valid', 'is <person>'s passport good for the October 15 trip' (on_date=2026-10-15) and 'what expires before harvest' (on_date + within_days). By default returns ONLY what needs attention: expired, expiring and — importantly — documents with no expiry recorded. A no_expiry_recorded document is NOT in order: it expires and nobody knows when.

get_executive_summary_daily_sales

ChatGPT
Returns a compact, summary-ready rollup of the Daily Sales page for the authenticated Wilki client. Same numbers that feed the Executive Summary card on the UI's 'Daily Sales' page: totals for the day, top products by revenue and by quantity, top locations by revenue and top machines by revenue. Call this for questions like 'dame el resumen de ventas del día' or 'give me today's sales summary'. Data comes from the salesmix_history snapshot; if the requested day has no data, falls back to the latest available day and reports it under note.

get_executive_summary_ingredients_consumption

ChatGPT
Returns a compact, summary-ready rollup of the Ingredients Consumption page for the authenticated Wilki client. Same numbers that feed the Executive Summary card on the UI's 'Ingredient Consumption' page: totals across the fleet, top-N most-consumed ingredients fleet-wide, per-machine headline ingredient, and a 'near exhaustion' list of ingredient slots at or above a pct threshold (default 80%). Call this for 'resumen de consumo de insumos'. Note: this scans Athena sales events and may take several seconds.

get_executive_summary_last_sales_by_product

ChatGPT
Returns a compact, summary-ready rollup of the Last Sales by Product page for the authenticated Wilki client: how fresh the selling is across the fleet. Same numbers that feed the Executive Summary card on the UI's 'Last Sales by Product' page. Includes totals, aging buckets (<6h, <24h, <48h, <7d, >=7d, never), the top-N most-recently-sold machine×product pairs and the top-N stalest pairs (oldest last-sale timestamps). Call this for 'resumen de últimas ventas por producto' or 'which products haven't sold in a while'.

get_geo_distance

ChatGPT
Straight-line distance between two of the company's places. Each end can be the name of a registered place or a 'lat, lon' coordinate. Returns kilometres and bearing; if the destination is an area, the distance is to its EDGE (0 when the origin is inside) plus the distance to its centre. If a name matches more than one place it returns the candidates instead of picking one.

get_geo_nearby

ChatGPT
What the company has near a place, ordered from nearest to farthest. The reference can be the name of a registered place or a 'lat, lon' coordinate. Can be narrowed by radius in kilometres, category, layer or type.

get_geo_places

ChatGPT
Places the company has registered in Wilki (Cartography): named points with a category (house, shed, water point, warehouse…) and drawn or imported areas with their size in hectares. Also returns the existing layers and categories so you can filter. Use it to learn WHICH places exist before measuring distances, or when the user names a place that is not a locality or a weather station but something of their own.

get_inventory_alerts

ChatGPT
Actionable inventory alerts: items at or below their minimum stock (a purchasing signal), negative balances (a data-entry signal), stock expiring or already expired, and veterinary withdrawal periods still running — animals treated that cannot yet go to slaughter or whose milk cannot be used. Use this to answer 'what do I need to buy', 'what is about to expire', 'which mobs are still under withdrawal'.

get_inventory_movements

ChatGPT
Inventory movement ledger: receipts, consumptions, transfers between warehouses, adjustments, stocktakes and reversals. Append-only and auditable — nothing is ever deleted, corrections appear as reversals. Each movement can carry category-specific context: the vehicle and odometer for fuel, the mob and animal count for feed and veterinary supplies, the paddock and hectares for agricultural supplies. Use this to answer 'how much fuel did that tractor use', 'who took out the ivermectin', 'what moved last week'.

get_inventory_stock

ChatGPT
Current inventory levels recorded by the client in Wilki's Inventory Control tool: fuel, staff food, veterinary supplies, animal feed, agricultural supplies, spare parts and fencing materials. Quantities are always in the item's base unit (L, kg, m, un, dosis…). Use this to answer 'how much diesel is left', 'what is below its minimum', 'what do we have in the north warehouse'. Physical quantities only — this tool has no cost or monetary data.

get_location_weather_daily_history

ChatGPT
Reads detailed weather observations for the authenticated Wilki client by location, machine or station for a selected day. Use this to inspect the full observed temperature history collected during the day.

get_location_weather_daily_summary

ChatGPT
Reads the daily weather summary for the authenticated Wilki client by location, machine or station. Use this for the observed daily max, min and average temperature for today or a selected day.

get_location_weather_forecast

ChatGPT
Reads forecast weather by client location or machine for the authenticated Wilki client. This uses future forecast data, not past observations. Use this to compare expected temperatures across locations over the next days.

get_location_weather_observations

ChatGPT
Reads current weather by client location or machine for the authenticated Wilki client. This returns only the latest available observation, not the full day history. Use this to answer current-temperature questions for a location or machine.

get_machine_capacities

ChatGPT
Returns the configured maximum ingredient capacity for each machine×ingredient pair for the authenticated Wilki client. This is the operational ceiling (e.g. how many grams of coffee beans a hopper holds), NOT the current ingredient level. Use this to know how much of an ingredient a machine can hold when full, or to compute fill percentages alongside consumption.

get_machine_consumption_since_service

ChatGPT
Returns aggregated ingredient consumption per machine since each machine's last service (field last_parlevel_at from the ParLevel snapshot). For each machine it lists the products sold, the total quantity consumed of every ingredient (computed from the recipes assigned to those products), and — when configured — the percentage of the configured capacity that has been consumed. Also returns fleet-level totals across all machines. This is the recommended tool for questions like 'how many grams of sugar have we consumed since the last service' or 'how full is the coffee hopper across the fleet'. The query may take several seconds because it scans Athena sales events.

get_machine_internal_temperature

ChatGPT
Returns the internal temperature sensor readings exposed by ParLevel for specific machines, when available. Use this only for questions about a machine's own internal temperature, not the ambient temperature of its location.

get_machine_sales_temperature_correlation

ChatGPT
Correlates today's machine sales with the observed temperature near that machine's linked location. Use this for questions about whether a machine sold more or less as temperature changed during the day.

get_mobble_animals_summary

ChatGPT
Aggregates Mobble mob headcount (and DSE) into a ranked summary grouped by a chosen dimension. group_by accepts: 'paddock' (default — by paddock_name), 'property', 'estancia' (the curated Datos Gestionados estancia name), 'grazing_group' (the curated grazing-group name — a second, independent grouping of paddocks), 'breed', 'gender', 'class', 'type' (animal type), 'age' (year of birth) or 'total'. Returns total head and total DSE per bucket plus a grand total. Use this for questions like 'how many animals per paddock', 'total head by breed', 'how many sheep are reproductores', 'total stocking by property', 'cuántos animales por estancia' (group_by='estancia'), 'cuántos animales por grupo de pastoreo' (group_by='grazing_group') or to break down a single estancia/grazing group by gender/breed/class — e.g. 'cuántos animales y de qué género hay en Las Colinas' → call with estancia_name='Las Colinas' + group_by='gender'.

get_mobble_casualties

ChatGPT
Returns Mobble livestock CASUALTIES (bajas / muertes) recorded for the authenticated client over the last ~365 days. Each row includes date, type, breed, gender, ages, classes, headcount, reason and methodOfDisposal. Use mode='summary' to total head over the window grouped by reason / breed / month.

get_mobble_estancias

ChatGPT
Returns the client's estancias (Datos Gestionados → Estancias) with rolled-up totals: paddock_count, total_area_ha, total_dse, total_head and mob_count. Each estancia also lists its member paddocks (paddock_id, paddock_name, property_name, area_ha, total_head). Estancias are an admin-curated organisation of paddocks (1 paddock ↔ at most 1 estancia) — use this tool to answer 'list my estancias', 'how many animals are in estancia <name>' (cuántos animales hay en Las Colinas), 'which paddocks are in estancia X' or 'cuántas hectáreas tiene la estancia X'. For a per-breed/per-gender/per-class breakdown of animals inside an estancia, call get_mobble_animals_summary with estancia_name=<name> and group_by=breed (or gender / class).

get_mobble_grazing_groups

ChatGPT
Returns the client's grazing groups (Datos Gestionados → Grupos de Pastoreo) with rolled-up totals: paddock_count, total_area_ha, total_dse, total_head and mob_count. Each grazing group also lists its member paddocks (paddock_id, paddock_name, property_name, area_ha, total_head). Grazing groups are a SECOND admin-curated grouping of paddocks, independent from Estancias (a paddock may belong to one Estancia AND one grazing group at the same time; 1 paddock ↔ at most 1 grazing group). Use this tool to answer 'list my grazing groups' / 'lista mis grupos de pastoreo', 'how many animals are in grazing group <name>' (cuántos animales hay en el grupo de pastoreo X), 'which paddocks are in grazing group X' or 'cuántas hectáreas tiene el grupo de pastoreo X'. For a per-breed/per-gender/per-class breakdown of animals inside a grazing group, call get_mobble_animals_summary with grazing_group_name=<name> and group_by=breed (or gender / class).

get_mobble_increases

ChatGPT
Returns Mobble livestock INCREASES (incrementos / nacimientos / reclasificaciones) recorded for the authenticated client over the last ~365 days. Each row includes date, type, breed, gender, ages, classes and head count. mode='summary' aggregates head over the window by breed / class / month.

get_mobble_mobs

ChatGPT
Returns Mobble mobs (animal groups) for the authenticated client across every selected property, annotated with the parent paddock name, property name, organisation and the estancia_name/id when the parent paddock belongs to a curated estancia. Each mob row carries number (headcount), type (Sheep, Cattle, …), breed, gender, ages (years of birth) and classes (e.g. 'Reproductor', 'Recria', 'Venta'). Use this for questions like 'how many animals are in paddock X', 'how many sheep do I have', 'list mobs of breed Dohne', 'which paddocks have rams' or 'list mobs in estancia X' (using estancia_name).

get_mobble_organisations

ChatGPT
Returns the Mobble organisations and properties (campos) the authenticated client has access to. Each property has an id, name and role. Use this to list the client's farms or to resolve a property id from a name before calling more specific Mobble tools.

get_mobble_paddocks

ChatGPT
Returns Mobble paddocks (potreros) for the authenticated client across every selected (organisation, property) pair. Each paddock includes name, type, area in ha, grazing status, total live stocking rate (DSE) and per-area DSE/ha, the parent property name, the estancia_name/id and grazing_group_name/id when the paddock belongs to a curated estancia and/or grazing group (Datos Gestionados), and a precomputed centroid (lat/lon) for geospatial joins. Use this for questions like 'list my paddocks', 'which paddocks are resting', 'how many hectares does X paddock have', 'which paddocks are in estancia X' or 'how many head are in paddock Y'. To list/aggregate the estancias or grazing groups themselves use get_mobble_estancias / get_mobble_grazing_groups.

get_mobble_purchases

ChatGPT
Returns Mobble livestock PURCHASES recorded for the authenticated client over the last ~365 days. Same shape as get_mobble_sales but for incoming animals (sellerName instead of buyerName). Use mode='summary' to total head and amount over the window.

get_mobble_range_report

ChatGPT
Returns the Mobble period-range snapshot: the start-of-period and end-of-period composition of the stock by type/breed/gender/class. Useful for questions like 'how many head did I start the year with' vs 'how many do I have now', or to see how the herd evolved over the rolling 365-day window.

get_mobble_sales

ChatGPT
Returns Mobble livestock SALES recorded for the authenticated client over the last ~365 days (rolling window persisted by the daily sync). Each row includes date, type, breed, gender, ages, classes, head count (number), buyer, price per head and total price (in cents — divide by 100 to get the local currency amount). Use this for questions like 'total sales last 30 days', 'who bought my animals', 'sales of Dohne breed last quarter' or 'total value of sales last year'. mode='list' returns rows; mode='summary' returns aggregated head + total amount.

get_paddock_weather_daily_summary

ChatGPT
Returns the daily observation summary (min/max/avg temperature, observation count, first/last observed timestamps) for a chosen day, from the closest MeteoChile station to the Mobble paddock or property centroid. Defaults to today in the client timezone. USE THIS for questions about today's high/low at a farm/estancia/paddock by name — even if a Weather Underground PWS shares the name. level='property' aggregates to the farm; level='paddock' returns per-paddock rows.

get_paddock_weather_forecast

ChatGPT
Returns the multi-day temperature forecast (min/max/avg per day) by joining a Mobble paddock or property centroid to the closest official MeteoChile station with data. USE THIS for ANY forecast question when the place named by the user matches a farm, ranch, estancia, campo, property or paddock — even if a Weather Underground PWS shares the same name (Wunderground does NOT provide forecast). level='property' (one forecast per farm — default when only property_name/property_id is filtered) or level='paddock' (one forecast per paddock). days controls how many days (1–7, default 3). Each daily entry includes a 'label' field set to 'today' / 'tomorrow' / the date — use this to answer questions like 'pronóstico para mañana en <farm>' without parsing dates yourself.

get_paddock_weather_observations

ChatGPT
Returns the most recent weather observation by joining a Mobble paddock or property centroid to the closest official MeteoChile station (DGAC/DMC network) within 300 km that is currently reporting data. USE THIS when the user names a farm, ranch, estancia, campo, property or paddock — even if a Weather Underground PWS happens to share the same name. level='property' (one row per farm — the default when only property_name/property_id is filtered) or level='paddock' (one row per paddock — used when paddock_name/paddock_id is filtered). Returns temperature (°C), humidity (%), wind speed (km/h), wind direction (°), pressure (hPa) and precipitation (mm). For multi-day outlooks use get_paddock_weather_forecast.

get_parlevel_accounts

ChatGPT
Reads ParLevel business data for the authenticated Wilki client: account records, customer hierarchy and account metadata.

get_parlevel_locations

ChatGPT
Reads ParLevel business data for the authenticated Wilki client: locations, customer sites and account-linked operational metadata.

get_parlevel_machines

ChatGPT
Reads ParLevel business data for the authenticated Wilki client: vending machines, machine status, machine type, linked location and alert information. This tool intentionally excludes internal machine temperature fields; use weather tools for ambient location weather and the dedicated internal-temperature tool if you specifically need the machine's own sensor.

get_parlevel_sales_by_location

ChatGPT
Summarizes recent ParLevel sales grouped by location for the authenticated Wilki client. Use this first for questions like which location sold the most or least today or in the last N hours.

get_parlevel_sales_detail

ChatGPT
Returns detailed intraday ParLevel sales deltas with timestamps for the authenticated Wilki client. Use this for drill-down of ONE specific machine+product pair by hour or 15-minute interval — always pass both a machine filter (machine_id/machine_name) AND a product filter (product_code/product_name). For product RANKINGS (top-selling products across machines) use get_parlevel_top_products instead — calling this tool with only a broad product filter is very slow and may time out.

get_parlevel_sales_summary

ChatGPT
Summarizes recent ParLevel sales for the authenticated Wilki client over a rolling time window. Best for questions about today, the last N hours, and top or bottom performing locations.

get_parlevel_salesmix

ChatGPT
Reads ParLevel business data for the authenticated Wilki client: sales mix, products, product codes, machine-level assortment and sales-related attributes.

get_parlevel_salesmix_history

ChatGPT
Reads ParLevel business data for the authenticated Wilki client: sales mix history, product performance over time and detailed time series by machine and product. Best for drill-down analysis, not for ready-made location rankings.

get_parlevel_top_products

ChatGPT
Returns a ranking of the top-selling PRODUCTS for the authenticated Wilki client for ONE day, aggregated across all machines. Each row includes total quantity and amount sold for the product plus the top machines that sold it (so one tool call answers both 'which product' and 'where'). Use it for questions like 'most-sold coffee product today' or 'top products yesterday'. It covers a single day per call: for a period such as a week, call it once per day and add up the results. Use product_name to filter by substring (e.g. 'cafe', 'snack').

get_payscan_devices_summary

ChatGPT
Returns a summary of PayScan payment devices for the authenticated Wilki client: total devices, breakdown by status (ACTIVE / INACTIVE / others), counts by branch, and last activity timestamps. Use this to answer questions like 'how many PayScan devices are active?' or 'which branches have inactive terminals?'.

get_payscan_transactions

ChatGPT
Queries PayScan transactions for the authenticated Wilki client over a rolling time window (last 1 to 48 hours). Supports filters by status (e.g. COMPLETED, PENDING), device, payment method (DEBIT/CREDIT/CASH — CASH means no card was used on the transaction), card brand (VISA/MASTERCARD/...), amount range and intra-day hour range, and several aggregation modes: 'summary' (totals + by-status), 'by_status', 'by_device', 'by_hour', 'by_payment_method', 'by_card_brand', or 'list' (returns raw transactions sorted newest first). Use this for questions like 'last hour transactions', 'average ticket in the last 24h', 'total sales today via PayScan', 'how many pending transactions', 'split between debit and credit', 'how much was paid with Visa today', or 'transactions between 12:00 and 14:00 above $1000'.

get_recipe_ingredients

ChatGPT
Lists the ingredient catalog (master data) configured for the authenticated Wilki client. Each ingredient has an id, name and unit (e.g. g, ml, units). Use this to discover which ingredients exist or to resolve an ingredient_id from a name.

get_recipes

ChatGPT
Lists the recipes configured for the authenticated Wilki client. A recipe maps a product to the ingredients (and per-unit quantity) it consumes. Use this to know which ingredients each product consumes per sold unit.

get_shopify_daily_sales

ChatGPT
Daily net_sales / gross_sales / orders series for the last 30 days from ShopifyQL. Each row has day, net_sales, gross_sales and orders. Use this for trend questions like 'show me sales day by day this month'.

get_shopify_draft_orders

ChatGPT
Latest draft orders (quotes / in-progress carts) — name, status (OPEN/INVOICE_SENT/COMPLETED), totals, customer and line items. Useful for 'what quotes are open', 'how many drafts pending' or 'which clients haven't completed checkout'.

get_shopify_monthly_sales

ChatGPT
Monthly net_sales and orders series for the last 12 months from ShopifyQL. Use this to compare months and answer 'how is this month vs the same month last year' or 'show me the trend over the year'.

get_shopify_orders_by_channel

ChatGPT
Orders and net_sales split by referring_channel (direct / social / search / …) over the last 30 days. Use this for 'where is the traffic coming from' / 'which channel converts best' questions.

get_shopify_recent_orders

ChatGPT
Latest detailed orders (up to ~50 from the sync), each with order name (#1008), createdAt, financial status (PAID/REFUNDED/PENDING/…), fulfillment status, total amount in the shop's currency, customer display name + email, line items (title, quantity, unit price) and shipping city/province/country. Use this for questions like 'show me the last 5 orders', 'which orders are unfulfilled' or 'who bought the X product recently'.

get_shopify_sales_summary

ChatGPT
Executive sales summary for the Shopify store over the rolling window covered by the analytics sync (daily series for the last 30 days). Returns net_sales total, gross_sales total, orders total, average order value (AOV), the best day and the daily average. Currency uses the shop's own currency code. Use this as the headline 'how is the store doing this month' answer.

get_shopify_shop_info

ChatGPT
Returns Shopify storefront metadata for the authenticated client: shop name, primary domain, myshopify subdomain, currency code, IANA timezone, plan display name, and the last sync timestamp from the 12h connector. Use this first to know what storefront you're talking about.

get_shopify_top_products

ChatGPT
Top products by net_sales over the last 30 days. Each row has product_title, net_sales and orders. Use this for 'what's selling' and pareto questions.

get_sii_counterparties

ChatGPT
SII book amounts GROUPED BY COUNTERPARTY: who I invoiced (libro=ventas) or who I bought from (libro=compras). THE TOOL for 'how much did I invoice <company>', 'how much have I bought from <supplier>', 'who are my top 5 suppliers/customers'. Use search with part of the name or the RUT; it also resolves aliases against Wilki's Suppliers master. Without search it returns the full ranking by amount.

get_sii_coverage

ChatGPT
Which SII tax periods this client has synced, per book, and when the connector last ran. Call it BEFORE claiming a period is zero, and when the user asks 'since when do you have my data'. A period missing from this list is NOT zero: it was never downloaded.

get_sii_document_detail

ChatGPT
What is INSIDE a received invoice: its line items (what was bought, quantity, unit, unit price and amount), plus the issuer's trade and address, specific taxes and references to other documents. THE TOOL for 'what was on invoice 1001', 'what did <supplier> sell me on that one'. get_sii_documents returns the book ROW; this returns the CONTENT. ⚠ Received documents only (purchases book): documents the company issued have no line items here. If you don't know the period, find the document first with get_sii_documents.

get_sii_documents

ChatGPT
SII book documents ONE BY ONE: date, type, folio, RUT, legal name and amounts. For when the user wants to SEE the invoices ('show me July's invoices', 'what did I buy from <supplier> in March', 'find folio 1001'). For TOTALS use get_sii_summary or get_sii_counterparties, which apply the credit-note sign — here amounts come as-is and credit notes are flagged.

get_sii_spend_by_category

ChatGPT
PURCHASE spend grouped by the supplier's CATEGORY (or trade sector). THE TOOL for 'which categories do we spend the most on', 'where is the money going' and any executive summary of spend by supplier type. Crosses the SII purchases book with the client's Suppliers master: the book knows who was bought from and how much, the master knows what that supplier is. Joined by tax id. Also returns how much spend stayed unclassified and why, plus the classified coverage percentage: with low coverage the ranking does not represent total spend and you must say so.

get_sii_summary

ChatGPT
Totals of the Chilean SII SALES and/or PURCHASES book (RCV) per tax period. THE TOOL for 'how much did I invoice in July' (libro=ventas) and 'what were my purchases this month' (libro=compras). Returns net, exempt, VAT and total at the same level, plus document count. Credit notes are already subtracted and dispatch notes excluded. Each period carries a status: empty is a real zero, not_synced means that month was never downloaded from the SII — never present it as zero.

get_tabsa_crossings

ChatGPT
Status of TABSA maritime crossings in the Magallanes Region (Chile). THIS IS THE TOOL for 'how are the crossings today?', 'is the Primera Angostura / Río Verde barge running?', 'is there a ferry to Porvenir today or tomorrow?', 'can I cross to Tierra del Fuego?', 'is the Strait of Magellan crossing suspended?'. Covers the two Strait barges (Primera Angostura and Río Verde, mainland ↔ Tierra del Fuego / Isla Riesco) and the Punta Arenas ↔ Porvenir ferry (vessel Pathagon). Returns, per crossing, its current, today and tomorrow status, a heads-up if a problem is anticipated in the coming days, and the ferry departure times. Public platform data: any client can ask.

get_tax_documents

ChatGPT
Individual documents from the company's own purchase or sales book, newest first: date, tax period, SII type and code, folio, counterparty with tax id, amounts (net, exempt, VAT, other taxes, total), status and whether the row came from the SII connector or was typed in. Use it for 'show me July's invoices', 'find folio 1234', 'what did I buy from that supplier'. For totals use get_tax_documents_summary — this one truncates the list but still reports the totals of the whole period. Each document says whether it counts in the totals and why not when it doesn't. A row with source 'sii' cannot be edited in Wilki: it is corrected at the SII.

get_tax_documents_summary

ChatGPT
Totals of the company's OWN purchase and sales books (Wilki's Tax Documents tool), with a breakdown by month, document type, counterparty or source. Use this for 'how much did I buy in July', 'how much VAT credit do I have', 'how much did I invoice', 'who did I buy the most from'. IMPORTANT: this is the CLIENT'S COMPLETE BOOK — it merges what they registered by hand (paper invoices and receipts, Free Zone documents, anything not yet in the SII) with what the SII connector already downloaded. Prefer it over get_sii_summary, which only sees the connector half and therefore undercounts for any client who types documents in. Totals come PER CURRENCY and must never be added together. Credit notes are already subtracted. excluded counts documents that are shown but do NOT sum (voided, dispatch notes, and SII rows still in PENDIENTE rather than REGISTRO). Always read sources: if it carries warnings the book may be incomplete and you must say so.

get_temperature_current

ChatGPT
Returns the latest current temperature for a specific Wilki location, machine or weather station. Use this only for the current/latest temperature, not the whole day history.

get_temperature_daily_summary

ChatGPT
Returns the daily minimum, maximum and average temperature for a specific Wilki location, machine or weather station. Use this for direct questions about the observed thermal range during today.

get_temperature_day_history

ChatGPT
Returns the full observed temperature history for today or a selected day for a Wilki location, machine or weather station.

get_temperature_day_range

ChatGPT
Returns the observed minimum, maximum and average temperature during today or a selected day for a Wilki location, machine or weather station.

get_temperature_forecast

ChatGPT
Returns future forecast temperatures for a Wilki location, machine or weather station. Use this only for future or expected temperatures, never for current or past observed temperatures.

get_tranciti_vehicles

ChatGPT
Returns the latest known position for each vehicle explicitly enabled for the authenticated client, enriched with the Chilean comuna / provincia / región at the reported coordinates. Use this for questions like 'where is plate ABC123' (filter by patente), 'where is the FORD F-150' (filter by description), 'where are my vehicles' (no filter), 'list trucks in Santiago' (filter by flota + comuna), 'which vehicles are in the BIOBÍO region' (filter by region) or 'how many vehicles are moving right now' (filter moving=true). Each row carries plate, description, group, fleet, driver, lat/lon, comuna, provincia, region, speed in km/h, heading, ignition state and the timestamp the position was reported. Vehicles outside Chile (or with invalid coordinates) come back with a null comuna/provincia/region but the lat/lon is still populated.

get_tranciti_vehicles_summary

ChatGPT
Aggregates the Tranciti vehicles explicitly enabled for the client, grouped by a chosen dimension. Use this for headline questions like 'how many vehicles per region', 'fleet split by flota', 'vehicles by comuna', 'how many are moving vs stopped' or 'breakdown by driver'. The same filters as get_tranciti_vehicles are honoured — e.g. group_by='comuna' + region='Metropolitana' answers 'how many vehicles in each comuna of the Santiago region'. Each group row reports total vehicles, how many are moving (speed ≥ 5 km/h with ignition on), and how many are stopped with engine on or off. The response also includes a 'totals' block with the same counts for the whole filtered fleet.

get_vambe_agent_distribution

ChatGPT
Per-agent breakdown of the unanswered-conversations backlog. Each row has agent_id, agent_name, agent_last_name, count (how many pending), median_waiting_seconds and max_waiting_seconds. An 'Unassigned' synthetic row captures the bucket that hasn't been routed to any human yet — usually the biggest one for clients that don't route leads. Use this for 'who has the most pending' or 'is the unassigned queue growing' questions.

get_vambe_kpis

ChatGPT
Vambe team-snapshot KPIs: total unanswered conversations, how many are assigned to a human agent vs unassigned (the AI couldn't resolve and nobody is on it), median / p90 / average waiting time in seconds, and the average first-response time in seconds. Refreshed hourly between 07-19 America/Santiago. Use this for headline questions like 'how many leads are waiting' or 'what's our average response time'.

get_vambe_pending_conversations

ChatGPT
Detailed bandeja of contacts whose latest message hasn't been answered yet. Each row has contact name, platform (whatsapp / instagram / …), current pipeline, current stage, waiting_seconds (how long the contact has been waiting for a reply) and assigned_agents. Sorted by waiting_seconds desc by default. Use this for questions like 'who has been waiting longest', 'show me the oldest pending leads' or 'which contacts are stuck in stage X'.

get_vambe_pending_summary

ChatGPT
Aggregates the bandeja by a chosen dimension and returns count + median/max/total waiting_seconds per group. Use group_by='stage' to answer 'how many leads in each stage', group_by='pipeline' for 'which funnel is most loaded', group_by='platform' for 'which channel drives the backlog', or group_by='agent' for 'who has the most pending and how stale is it'.

get_vambe_pipelines

ChatGPT
Vambe pipelines and their stages — the funnels configured for the client. Each pipeline has id, name, description and a stages array (id, name, description). Useful for understanding which stage names the other Vambe tools will return (stages like 'INICIAL CON IA', 'CONCRETAR', 'Perdidos', etc.). Refreshed every 24 h.

get_vambe_team_members

ChatGPT
Vambe human team members the client has configured — id, name, first_name, last_name. Use this to translate agent_id values from other tools into human names, or to answer 'who is on my sales team'.

get_weather_forecast

ChatGPT
Reads the multi-day weather forecast ONLY by public-data lookups: a Chilean comuna (locality) name or an official MeteoChile station_code (DGAC/DMC network). It does NOT accept client-private names like ParLevel locations, Mobble paddocks/properties, or PWS — those have dedicated tools. Weather Underground PWS stations do not provide forecasts. For a client-owned farm/ranch/property/paddock by name use get_paddock_weather_forecast (Mobble); for a ParLevel location use get_location_weather_forecast.

get_weather_observations

ChatGPT
Reads current weather ONLY by public-data lookups: a Chilean comuna (locality) name or an official MeteoChile station_code (DGAC/DMC network). It does NOT accept client-private names like ParLevel locations, Mobble paddocks/properties, or Weather Underground PWS — those have dedicated tools. Use this when the user names a public locality ('Colina', 'Providencia', 'Vitacura') or a known MeteoChile station code. For a client-owned farm/ranch/property/paddock by name, use get_paddock_weather_observations (Mobble) instead. For a client-named PWS, use get_wunderground_observations.

get_wunderground_observations

ChatGPT
Returns the latest weather observation for each Weather Underground PWS station configured for this client. These are personal weather stations that the client owns and named — the station_name is whatever the client called it (e.g. 'Las Colinas', 'Santiago Centro', 'oficina', 'casa', 'campo norte'), not a public locality. Filter by station_id (exact, e.g. 'IPRIMA12') or by station_name (case-insensitive substring match). If both filters are provided, station_id takes precedence. If neither is provided, returns observations for all configured stations. Use this for questions where the place name matches a client-owned PWS (e.g. '¿cuál es la temperatura en Las Colinas?', '¿cuánto llueve en casa?', 'clima actual en todas mis estaciones'). If the user's place name looks like a public Chilean comuna ('Colina', 'Providencia') and does NOT match any configured PWS name, fall back to get_weather_observations instead. When in doubt, call get_wunderground_stations first to see what the client has configured. Data comes from api.weather.com (units=metric). Each observation includes temperature (°C), humidity, wind speed/gust/direction, pressure (hPa), dew point, precipitation rate and total, UV index, solar radiation, latitude/longitude and the station-reported neighborhood.

get_wunderground_observations_history

ChatGPT
Returns up to 7 days of historical Weather Underground observations for the client's PWS stations. Use this for trend / time-series questions about a client-owned station whose name matches the place mentioned by the user (e.g. '¿cómo ha variado la temperatura en Las Colinas las últimas 6 horas?', '¿cuál fue la máxima en la oficina hoy?', '¿llovió anoche en casa?'). The station_name is whatever the client called it — not a public locality. If the user's place name is a public Chilean comuna and does NOT match any configured PWS, this tool will not have data — use the MeteoChile-backed weather tools instead. Each entry has station_id, name, fetched_at (ISO UTC) and the full observation payload (same fields as get_wunderground_observations). Filter by station_id (exact) or station_name (substring); default is all stations. Entries come sorted by fetched_at ascending. Only successful observations are stored — gaps indicate the station was temporarily unreachable. Days before the station was added to Wilki are seeded from Weather Underground itself at one entry per hour, so older stretches are coarser than recent ones. To compute max/min/avg over a window, fetch the entries and aggregate client-side.

get_wunderground_stations

ChatGPT
Lists the Weather Underground personal weather stations (PWS) configured for this client. Returns each station with its station_id and the human-readable name the client assigned to it (e.g. 'Las Colinas', 'oficina', 'campo norte'). Call this whenever the user asks about weather at a place name and you are not sure whether it refers to a client-owned PWS or to a public Chilean locality — if the name matches a station here, use get_wunderground_observations; otherwise fall back to get_weather_observations (MeteoChile, by comuna).

Capabilities

Read

Example Prompts

Click any prompt to copy it.

Similar Apps