Actions and results

What each AI Assistant button and automatic behaviour does, with worked numbers and what the system refuses.

On this page (13)

Assistant landing page

ActionWhenWhat you doWhat happens
Landing page loads for a normal userTest user with ai.use and a sales role; built-in engineOpen AI AssistantGreeting with your name; capability and module cards; 'Try these' chips; MCP badge shows connected/total; Your access lists the tools you can use; Recent chats (up to 12, pinned first)
First use seeds the companyA fresh test company that never opened the assistantOpen AI Assistant; then Agents, MCP Servers, KnowledgeSettings row created; 16 standard agents (General, Sales, Purchase, Inventory, Accounting, Bank Reconciliation, HR, Payroll, Projects, Omnichannel, Marketing, Fleet, Manufacturing, CRM, Reporting, Admin); the a2NSoft ERP server Connected with its tools; 'a2NSoft User Guide' collection with one indexed document; 6 shared saved prompts

Conversation

ActionWhenWhat you doWhat happens
Ask a question answered from your own data3 posted test sales invoices this month: AED 1,000, 2,500 and 4,000 (total 7,500)Ask 'Show sales this month'Status 'Adding up sales'; answer gives total AED 7,500.00 from 3 invoices with a table; figures match Reporting for the same period; nothing from another company
Group sales by customerInvoices above: Customer A 1,000 + 2,500; Customer B 4,000Ask 'Show sales this month by customer'Table: Customer A 3,500.00, Customer B 4,000.00; total 7,500.00
Overdue invoices with a thresholdPosted invoices: INV-A AED 12,000 due 10 days ago with 3,000 paid; INV-B AED 15,000 due 40 days ago unpaid; INV-C AED 11,000 due tomorrowAsk 'Show overdue invoices above AED 10,000'The filter uses the amount still owed: INV-A 9,000 left (below 10,000) excluded, INV-C not yet due excluded; 'Found 1 overdue invoices of AED 10,000.00 or more, AED 15,000.00 outstanding in all.'; KPI Oldest 40 days
Explain a document by numberA posted invoice INV-00032Ask 'Explain INV-00032'Record card with partner, dates, total, paid/outstanding and lines; an 'Open' action links to the document
Ambiguous name asks backTwo customers 'Gulf Retail LLC' and 'Gulf Retail Trading'Ask 'Show the card for Gulf Retail'Error block 'I found 2 customers matching "Gulf Retail". Which one?' with both as candidates; picking one answers; it never picks on its own
Unknown recordAsk 'Show the card for ZZZ Nobody''No active customer matches "ZZZ Nobody".' with the suggestion to check spelling; nothing created
Stock questionsProduct LAPTOP-T with 7 on hand, reorder level 10Ask 'Show low stock' then 'Stock of LAPTOP-T'Low stock lists LAPTOP-T (7 against 10); stock answer gives 7 per warehouse
Pending approvalsUser holds hr.employee.manage and journal.approve; 2 pending leave requests, 1 submitted journalClick chip 'List pending approvals''3 items waiting for your approval.' table with Type, Reference, Requested by, Amount; types you cannot approve are not listed
My own profile and leaveLogin linked to a test employee with 30 days annual leave, 5 takenAsk 'What is my leave balance?'Record card 'You · <number>' with position, department, manager; leave table Annual 25 days; only your own record
Login not linked to an employeeTest user without an employee linkAsk 'my leave balance''Your login is not linked to an employee record.' with the hint to link it in Administration > Users > Employee
Profit and lossUser with report.view; posted revenue 50,000, expenses 32,000 this monthAsk 'Profit and loss this month'Revenue 50,000.00, costs 32,000.00, net profit 18,000.00 - same as Reporting > Profit & Loss
Built-in engine helpBuilt-in engineAsk 'tell me a joke'Help text listing what it understands ('Show today's sales...', 'Explain INV-00032'...) plus the line about configuring a model
Smart routing saves the modelClaude engine with a test key; Token saving = SmartAsk 'Show low stock' then ask 'Which of those is the biggest?'First answer model 'a2N built-in' (Usage: Answered without the model +1, no tokens); the follow-up goes to Claude (tokens counted)
Arabic question goes to the modelClaude engine; SmartAsk 'اعرض المبيعات هذا الشهر'Not answered by the built-in engine; Claude answers in Arabic; amounts and 'AED' kept exactly as the tools gave them
Response languageSettings language = Arabic; composer language AutoAsk in English 'Show overdue invoices'Answer written in Arabic; switch composer to English and ask again -> English (composer wins)
Model outageClaude engine with an invalid test keyAsk any free-form questionMessage 'The AI assistant is temporarily unavailable. Your ERP remains fully available.' with a Retry; the ERP screens keep working
Stop while answeringClaude engineAsk a long question; press StopStreaming stops; the composer is free again; no proposal half-made
Rate limit per userSettings Messages per minute = 3Send 4 messages within one minute4th refused: 'You are sending messages faster than the company allows. Wait a moment and try again.'; after a minute it works
Rename, pin, archiveAn existing chatMore > Rename to 'Oct review'; Pin; Archive; open Archived chatsTitle saved (160 max); chat in Pinned; archived chat leaves Recent and shows under Archived chats
Delete a chatChat A with only questions; chat B where a proposal was confirmedDelete chat A; Delete chat BA disappears with its messages and unconfirmed proposals; B is archived instead (evidence kept) and still in the activity log
Duplicate a chatA chat with a confirmation cardMore > DuplicateNew chat '<title> (copy)', private, same messages; confirmation cards are NOT copied
ExportA chat with a table answerExport as Markdown; Export as text; Print / save as PDFFiles '<title>.md' / '.txt' with You / a2N Assistant and time per message; tables up to 200 rows; print dialog opens
FeedbackAn answerClick Not helpful, choose 'wrong_record'; then HelpfulStored; Usage feedback counts update (down then up)
Advanced mode traceAn answer that used toolsMore > Advanced mode (trace)Steps show tool label, status and ms (e.g. 'Reading invoices · ok · 120 ms'); never the model's reasoning
Read aloudClick Read aloud on an answer; then Stop readingAnswer is spoken in the chosen language; if no voice exists: 'No voice for this language on this device'

Composer

ActionWhenWhat you doWhat happens
Attach a file and askA CSV with columns Customer, Amount and rows 1,200.50 / 800 / 999.50Plus > Upload file; ask 'Summarize this file'Columns listed; 'Totals of the first rows: Amount 3,000.00'; table of the first 20 rows; file appears in My Files linked to this chat
Attach an ERP recordA test customerPlus > Customer; pick it; ask 'What does this customer owe?'Answer about that customer only (outstanding and overdue)
ScreenshotChromePlus > Take screenshot; choose a windowImage attached; cancel the picker -> 'The screenshot was cancelled.'
DictationChrome with a microphoneClick Voice; speak 'show low stock'; right-click Voice and choose Arabic'Listening... speak now, then edit and send.'; words appear in the box for editing; not sent automatically; Firefox: 'This browser cannot transcribe speech. Try Chrome or Edge.'

Confirmation card

ActionWhenWhat you doWhat happens
Propose a customerUser with ai.act and partner.manageAsk 'Create a customer named Test Gulf Retail with email test@example.com'Card 'Create customer': Name, Role customer, Market business, Email, Phone -, Payment days 0; status 'Waiting for you'; NO customer exists yet in Contacts
Confirm a customerThe card aboveClick Confirm & CreateCard turns 'Done' with 'Test Gulf Retail created' and its code; Open contact works; activity log shows the tool with records; action status executed with your name as confirmer
Duplicate customer refused at proposalTest Gulf Retail existsAsk again to create 'test gulf retail'No card: 'Test Gulf Retail already exists as <code>.' with 'Open the existing record instead of creating a duplicate.'
Propose and confirm a quotationCustomer Test Gulf Retail; Laptop price 3,500, Mouse price 45, both 5% VATAsk 'Create a quotation for Test Gulf Retail with 5 x Laptop, 2 x Mouse'; check card; ConfirmCard lines: Laptop 5 x 3,500.00 = 17,500.00; Mouse 2 x 45.00 = 90.00; Estimated untaxed AED 17,590.00. After confirm: draft quotation created, total incl. tax AED 18,469.50; card shows the number and 'Open quotation'
Price override on a lineAs aboveAsk 'Create a quotation for Test Gulf Retail with 3 x Laptop at 3,200'Line 3 x 3,200.00 = 9,600.00; draft saved with that price after confirm
Quotation without linesAsk 'Create a quotation for Test Gulf Retail'No card; reply asks 'Which products and quantities should the quotation have? For example...'
Zero quantity refusedAsk for a purchase order with '0 x Laptop' (Claude engine)Refused: 'The quantity for Laptop must be more than zero.'; no card
Purchase orderSupplier Test Supplier; Laptop cost 3,000Ask 'Create a purchase order to Test Supplier with 4 x Laptop'; ConfirmCard untaxed 12,000.00 (product cost used); confirmed -> draft purchase order; nothing posted, no stock moved
Cancel a proposalA waiting cardClick CancelCard 'Cancelled'; nothing created; Confirm no longer offered
Double click lands onceA waiting quotation cardClick Confirm & Create twice quickly (or send the confirm call twice)Exactly ONE draft quotation is created; second call returns the same result
Proposal expires after 24 hoursA card proposed more than 24 hours ago (test DB time shift or wait)Click Confirm & CreateRefused 'This proposal expired. Ask again for a fresh one.'; nothing created; action status rejected with 'Expired after 24 hours.'
Permission removed between proposal and confirmCard proposed by user U; admin then removes partner.manage from U's roleU clicks Confirm & CreateCard 'Failed' with 'You no longer have permission for this action.'; no record created
ai.act removed between proposal and confirmCard waiting; remove ai.act from the roleConfirmRefused (403 / no permission); nothing created
Write actions switched off after proposalCard waiting; Settings > Write actions enabled offConfirmRefused 'Write actions are switched off in AI Settings.'; nothing created
Edit a proposalA waiting cardClick Edit; complete 'Change the proposal: make it 6 x Laptop'; sendA new card with the changed line; the old one stays waiting (cancel it) - only the confirmed one creates a record
CRM lead propose and updateUser with crm.manageAsk 'Create a lead for Test Co, expected value 25,000'; confirm; then 'Update CRM-xxxx expected value to 30,000'; confirmLead created; update card shows the change; confirmed -> 30,000; if somebody edited the lead in between, the save is refused (revision check)
Role without ai.actA Viewer-role test user (ai.use only)Ask 'Create a customer named X'Reply 'Your role may use the assistant but not ask it to make changes.'; no card

Live voice

ActionWhenWhat you doWhat happens
Live voice conversationSettings: Voice + Live on, a TEST Google key; Chrome with microphoneClick Live; say 'What are today's sales?'; interrupt while it speaks; EndConnecting -> Listening; 'Checking the ERP...'; spoken answer with the same figures as the typed answer; question and answer saved in the chat; interrupting stops speech
Live not set upNo Google key savedClick Live'Live voice is not set up. An administrator adds a Google Gemini key in AI Settings > Live voice.'
Live confirmation stays a cardLive voice runningSay 'Create a customer named Test Voice LLC'Spoken reply says a confirmation card is on screen; nothing saved until you click Confirm & Create

Knowledge

ActionWhenWhat you doWhat happens
Create a collection and add a typed documentai.configureNew collection 'HR policies (test)', Company; Add document: title 'Annual leave', paste 3 paragraphs (~3,000 characters); Add and index'Indexed.'; document Search ready with 3 passages (about 1,200 characters each, cut at paragraph ends)
Upload a documentA PDF with textAdd document; choose the PDF; leave title blankTitle = file name; Source = file name; passages counted; status Search ready
Search and citeDocument above mentions 'gratuity' once and 'leave' oftenSearch 'gratuity leave'; then in chat ask 'What is our gratuity rule?'Passage with 'gratuity' ranks first (rarer word weighs more); chat answer shows a Sources block with the document title and collection
Delete document and collectionRemove a document; Delete the collection (confirm)Document and its passages gone (search no longer finds it); collection and all its documents gone
Knowledge switched offSettings > Knowledge enabled offAsk in chat 'What is the leave policy?'The knowledge tool is not used (no Sources block); record whether the Knowledge screen search still answers

My Files

ActionWhenWhat you doWhat happens
Upload, preview, rename, shareUpload test-sales.csv; open it; Rename; Share; Make privatePreview shows rows and column count; name changes; visibility company then private
Archive and restoreArchive a file; switch to Archived; RestoreHidden from the main list, shown under Archived, back after Restore
Delete a fileYour own file not used in knowledgeDelete (confirm 'Delete this file permanently?')Removed from the list; a knowledge file is refused: 'This file is in the knowledge base. Remove it there first.'
DownloadDownload a fileSaved with a safe name; the browser does not open it inline (nosniff)
Use in chatUse in chat on a fileChat opens with the file attached in the composer
Formulas and macros not runAn .xlsx with =SUM() cells and a .xlsm with a macro (test files)Upload both; previewValues read as stored, formulas not evaluated, macro never runs

Agents

ActionWhenWhat you doWhat happens
Create a custom agentai.configureNew agent 'Collections Agent', code blank; Allowed tools: overdue_invoices, get_customer; Save'Agent saved.'; code 'collections_agent'; tile Custom agent; 'Tools you can use' = 2 (or fewer if your role lacks one)
Effective tools = user's permissions intersected with the agent's listAgent allows search_employees; user without hr.employee.viewPick the agent in chat; ask 'search employees Test''You don't have permission to see that, so I can't answer it.' - the agent never widens access
Blocked toolSales Agent with create_quotation blockedIn chat with Sales Agent ask for a quotation'The Sales Agent agent isn't allowed to use that. Try the General ERP Agent.'
Test consoleTest console: 'Show overdue invoices above 5000' and 'Create customer Test'Trace: overdue_invoices ok with result text; create_customer 'would propose (confirmation required)'; a tool outside the agent 'not allowed for this agent or user'; no record written
Disable and deleteDisable a standard agent; try Delete on it; delete a custom agentDisabled agent leaves the composer list (chats fall back to General); standard: no Delete button, API -> 'A standard agent can be disabled, not deleted.'; custom deleted
Max stepsClaude engine; agent Max steps 1Ask a question needing two tools (e.g. a customer's card and then their overdue invoices)Stops after one tool round; answer may be partial - no crash

MCP Servers

ActionWhenWhat you doWhat happens
Built-in server toolsOpen a2NSoft ERP server > ToolsEvery ERP tool listed with domain, risk, approval policy, calls, errors; read tools NEVER_REQUIRE_CONFIRMATION, writes CONFIRM_EVERY_TIME
Switch off a built-in toolSwitch off overdue_invoices; in chat ask 'show overdue invoices'Tool not used: the agent says it is not allowed; switch it on again -> works
Add an outside server with the wizardA test MCP server reachable over HTTPSAdd server: Custom API; name, URL; Bearer + test token; Save & test; Discover tools; enable one read tool; assign one agent; ActivateConnected with server name/version; tools discovered start OFF; write tools marked MEDIUM/HIGH; after Activate status Connected; log rows 'created', 'enabled', 'test'
Failing connectionWrong URL or wrong tokenSave & testStep 'Test connection' shows ERROR: HTTP ... or AUTH_REQUIRED; Try again offered; Logs show the error; health 'Last failure' set
Use an outside read tool in chatServer active, one read tool on, Claude engineAsk something only that tool answersBlock titled '<server> · <tool>' with its text; activity log server column = that server
Outside write tool refusedOutside tool without readOnlyHint, switched onAsk the model to use itRefused '<tool> on <server> changes data and needs an approval flow that external tools do not have yet.'
Test tool runnerServer detail > Tools > Test tool on a read tool with {"query":"Test"}Output shown; calls +1; runs with your own permissions
Delete an outside serverDelete (confirm 'Delete this server and its tool registry?')Server, its tools and logs gone; removed from every agent's Allowed MCP servers; built-in server: 'The a2NSoft ERP server can be restricted tool by tool, not deleted.'
a2NSoft's own MCP endpointSigned-in session (cookie) of a test userPOST JSON-RPC 'initialize', 'tools/list', 'tools/call' to /api/v1/workspaces/<company>/ai/mcptools/list shows read tools only (readOnlyHint); tools/call returns the same data as chat for that user; unknown method -> error -32601 'Method not found'

AI Settings

ActionWhenWhat you doWhat happens
Switch the assistant offGeneral: untick AI enabled; Save; try New chat and send'The AI assistant is switched off for this company.'; existing chats still readable
Engine and keyA TEST Anthropic keyModels: Engine Anthropic Claude, key, Save; Test connection; Remove key'claude-opus-5 answered: ready'; wrong key -> 'The API key was refused.'; Remove key -> engine back to built-in
Quick promptsGeneral: replace quick prompts with 2 lines; SaveLanding page chips show those prompts (personalised to tools you can use)
Edit conflictTwo admins open SettingsAdmin A saves; Admin B saves without reloadingB refused 'Somebody else changed these settings. Reload and try again.'

AI Settings > Activity log

ActionWhenWhat you doWhat happens
Activity logSome chats with tool calls and a confirmed actionOpen Activity log; sort by Duration; search a tool nameEach tool call: time, user, agent, server, tool, redacted input, result (300 chars), status ok / refused / error / proposed, records, duration; confirmations logged with {action_id}

AI Settings > Usage

ActionWhenWhat you doWhat happens
Usage and estimated costClaude claude-opus-5 answers this period: 10,000 input tokens, 2,000 output, 20,000 read from cacheOpen Usage, Last 30 daysEstimated cost = (10,000 x 5 + 20,000 x 5 x 0.1 + 2,000 x 25) / 1,000,000 = USD 0.11; tokens 10,000 / 2,000; built-in answers counted under Answered without the model at no cost

Feature switches

ActionWhenWhat you doWhat happens
Turn off Agents featurecompany.manageApplications > AI Assistant > Features: Agents off; reopen the AI menu; try to save an agentAgents menu hidden; save refused 'Agents is disabled for this company.'; existing agents still used in chat
Field rule RequiredFields: Agent purpose = Required; create an agent without purpose'*' on Purpose; save refused 'Agent purpose is required by this company.'