App packages
An app package gives your workspace a ready-made data model in one call. You get objects, fields, links and saved views. Optional extras are automations and sample data.
Install one when you want to start quickly. For example, ask your AI: "Install the CRM and add my first customer."
#Available packages
| Template | What you get |
|---|---|
agent_crm | Companies, contacts, leads, deals in a pipeline, notes, activities and follow-up tasks. The recommended CRM. |
agent_todos | Tasks with subtasks, priorities, assignees, due dates, dependencies and repeats. |
agent_kanban | Kanban boards over the same tasks. Columns follow the task status. |
agent_projects | Projects, milestones, deliverables, team members and progress over shared tasks. |
support | A help desk: tickets, customers, response-time targets and escalations. |
recruit | Vacancies, candidates, applications, interviews and evaluations. |
property | Properties, owners, tenants, listings, leases and maintenance requests. |
inventory | Products, variants, locations, suppliers, a stock ledger and purchase orders. |
assets | An equipment register with assignments, warranties, repairs and maintenance plans. |
cms | Website pages and posts with Markdown, SEO fields and translations. |
forms | An inquiry object for public website forms, with a triage status. |
content | Campaigns, posts per channel and performance numbers. |
crm is an older, smaller CRM. Use agent_crm for new workspaces.
The app package reference lists every object, field and view.
All task-based packages share one task object. So a CRM follow-up is also a to-do, and a card on the Kanban board.
#See what an install will do
Start with a dry run. It shows every object, field, link and view the install would create. Nothing is written.
{"tool": "packages_install", "arguments": {"template": "agent_crm", "dry_run": true}}The answer has a summary with counts, and an actions list. Each action says create, unchanged, conflict or skipped. A conflict means your workspace already has that item in a different form. AgentDB then keeps your version.
#Install a package
{"tool": "packages_install", "arguments": {"template": "agent_crm"}}What an install does, and does not do:
- Additive. It only adds objects, fields, links and views. It never removes or retypes a field.
- Safe to repeat. A second install of the same version changes nothing.
- Your data stays. An install never touches your records.
- Upgrades add new items and keep fields you changed. Going back to an older version is refused.
- Uninstall removes the views and automations. Your objects, fields and records stay.
Options:
automations: truealso adds the package's flows, jobs and approval policies. Only owners and admins can add them.sample_data: trueadds a set of made-up demo records, once.versioninstalls a specific version.
packages_list shows the available templates and what is installed.
{"tool": "packages_list", "arguments": {}}#Example: a small CRM
After installing agent_crm, add a company and a contact. The contact links to the company by its unique name, so you do not need the record id.
{"tool": "records_create", "arguments": {"object": "company", "data": {"name": "Example Ltd", "domain": "example.com"}}}{"tool": "records_create", "arguments": {"object": "contact", "data": {"first_name": "Ada", "last_name": "Lovelace", "email": "ada@example.com"}, "links": [{"relationship": "works_at", "target_key": {"name": "Example Ltd"}}]}}Now add a deal and link it to the company. Money fields hold an amount and a currency. A deal moves through fixed stages, from lead to won or lost. A new deal starts at lead.
{"tool": "records_create", "arguments": {"object": "deal", "data": {"title": "Example Ltd renewal", "amount": {"amount": "12000.00", "currency": "EUR"}, "stage": "lead"}}}{"tool": "relationships_link", "arguments": {"relationship": "for_company", "source_record_id": "$DEAL_ID", "target_record_id": "$COMPANY_ID"}}Find every contact who works at Example Ltd:
{"tool": "records_query", "arguments": {"object": "contact", "where": {"all": [{"relationship": "works_at", "where": {"all": [{"field": "name", "op": "eq", "value": "Example Ltd"}]}}]}}}The CRM also has saved views. views_render with agent_crm_pipeline shows the deals by stage.
{"tool": "views_render", "arguments": {"view": "agent_crm_pipeline"}}#Example: a to-do list with a board
Install the to-do app and the Kanban board. Both use the same task object.
{"tool": "packages_install", "arguments": {"template": "agent_todos"}}{"tool": "packages_install", "arguments": {"template": "agent_kanban"}}{"tool": "records_create", "arguments": {"object": "task", "data": {"title": "Call Example Ltd about the renewal", "priority": "high", "due_date": "2027-01-15"}}}The task now shows in the to-do views and as a card on the board. AgentTodos makes sure a task with open dependencies cannot be marked done.
#Example: import your contacts into the CRM
You already have a spreadsheet of contacts. After installing agent_crm:
- Import the companies, matching on the unique
name. - Import the contacts, matching on the unique
email. - Link each contact to its company with the
works_atrelationship.
imports_run does step 3 in the same call, with a links entry for the company column. See Files and imports.
#Try it with sample data
sample_data: true adds made-up records, so you can explore before you add your own. For the CRM that is a few agencies, contacts, leads, deals in every stage, activities and notes. All names are invented.
Tip: install sample data in a separate test workspace, so it never mixes with real records.