Aikount MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AIKOUNT_API | No | Optional Aikount API base URL. | https://api.aikount.com/api/v1 |
| AIKOUNT_TOKEN | Yes | Aikount API key (scope *, prefixed agl_). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whoamiA | Verify the token and return the active tenant (id, name, VAT, currency…). Call this first. A 200 confirms the token works; a 401/403 means it is missing, revoked, or malformed. Note: with an 'agl_' API key this reads /tenants/me. The /auth/me endpoint is reserved for interactive session logins (onboarding/membership flow) and deliberately rejects API keys. |
| list_contactsA | List contacts (customers and suppliers). Args: search: free-text match on name / legal name / VAT. kind: 'customer' or 'supplier' to filter; omit for both. limit: page size (1-500, default 50). offset: pagination offset. |
| create_contactC | Create a contact. |
| list_tax_typesA | List the tenant's tax types (IVA/IGIC/IPSI/IRPF), each with its UUID. Invoice/purchase lines reference a tax by |
| list_productsC | List catalog products/services. |
| list_invoicesC | List sales invoices. Lifecycle: draft -> issued -> paid. Args: status: e.g. 'draft', 'issued', 'paid'. contact_id: filter to one customer (UUID). from_date / to_date: ISO 'YYYY-MM-DD' bounds on doc_date. |
| get_invoiceB | Fetch one sales invoice in full by UUID. |
| create_invoiceA | Create a DRAFT sales invoice (call issue_invoice to assign a number). Money is in MAJOR units (euros as decimals), e.g. unit_price 1200.00 — NOT cents. Each line is a dict: { "description": "Consultoría mayo", # required "quantity": 1, # default 1 "unit_price": 1200.00, # default 0, euros "tax_type_id": "", # from list_tax_types; omit # to inherit the contact/ # product default "discount_pct": 0, # optional, 0-100 "irpf_rate": 0 # optional override, 0-100 } Args: contact_id: customer UUID (see list_contacts / create_contact). doc_date: ISO 'YYYY-MM-DD'. series_id: optional numbering-series override (UUID). |
| issue_invoiceA | Issue a draft invoice — assigns the next sequential legal number. Irreversible-ish: issued numbers must stay contiguous, so do not delete issued invoices to "renumber". Confirm with the user before issuing. |
| list_purchasesC | List purchase documents (supplier invoices / expenses). |
| get_purchaseC | Fetch one purchase document in full by UUID. |
| ingest_purchase_pdfA | Queue a purchase PDF/image for AI extraction (OCR -> deduped purchase). The AI reads the supplier, lines and taxes and creates the purchase doc, deduplicating by invoice identity (contact + supplier_invoice_number, fallback total + date) so the same invoice never lands twice. Runs async: this returns a job immediately — poll get_ingest_job(job_id) until its status is done, then read result for the created document. Args: file_path: local path to a PDF / JPG / PNG / WebP / HEIC. force: bypass dedup and ingest anyway (use only when you are sure it is a genuinely distinct invoice). |
| get_ingest_jobB | Poll the status/result of an AI ingest job (see ingest_purchase_pdf). |
| list_treasuriesA | List treasuries (bank / Stripe / PayPal accounts) with balances. Stripe/PayPal treasuries return a live balance pulled on read; bank-feed treasuries return the last synced snapshot. |
| list_bank_movementsB | List bank movements, optionally scoped to one treasury. Args: treasury_id: restrict to a single treasury (UUID). status: e.g. 'unreconciled' / 'reconciled'. from_date / to_date: ISO date bounds. search: free-text match on the movement description. |
| reconciliation_boardA | Get the reconciliation board: suggested movement<->document matches. The system auto-reconciles matches with confidence >= 0.95; everything below is a suggestion to confirm (reconcile_movement) or dismiss. |
| reconcile_movementA | Manually match a bank movement to an invoice/purchase document. Args: movement_id: bank movement UUID. document_id: invoice or purchase UUID. |
| list_accountsA | List the Spanish PGC chart of accounts (code, name, UUID, balance). Use this to resolve an account's UUID for |
| ledgerB | Read ledger movements for ONE PGC account. Args: account_id: the account's UUID (required). Resolve it from list_accounts — e.g. find the account whose code is '572' (bancos) and pass its id here. from_date / to_date: ISO date bounds. |
| trial_balanceA | Balance de sumas y saldos (trial balance) across every account. A one-shot overview of all account balances — no account_id needed. Args: at_date: ISO date to compute balances as of (default: today). |
| modelo_303_summaryA | Modelo 303 (quarterly VAT) — JSON summary of every quarter with activity. One row per (year, quarter): sales base, output VAT, rectified VAT, input VAT, and the net amount to pay. Use this for a machine-readable overview; use modelo_303_csv for the AEAT-format file of one quarter. |
| modelo_303_csvA | Modelo 303 backing detail for one quarter as CSV text. Returns the per-transaction breakdown (one row per invoice/purchase line: date, doc, contact, base, rate, iva, input/output) that the quarter's VAT figures are built from — useful for auditing the numbers. For the aggregated box totals, use modelo_303_summary. Args: year: e.g. 2026. quarter: 1-4. |
| api_requestA | Call any Aikount API endpoint not covered by a dedicated tool. The full surface is documented at https://api.aikount.com/openapi.json — fetch it (e.g. api_request('GET', '/../openapi.json')) when you need an endpoint this server doesn't wrap. Args: method: GET / POST / PATCH / DELETE. path: API path relative to the base, e.g. '/invoices' or '/contacts/'. Leading slash optional. params: query parameters. body: JSON body (for POST/PATCH). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mutonby/aikount-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server