Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ODOO_DBYesOdoo database name
ODOO_URLYesURL of your Odoo instance (without trailing slash)
LOG_LEVELNoLogging level (optional)INFO
REDIS_URLNoRedis connection URL (optional)redis://localhost:6379/0
LOG_FORMATNoFormat for logs, either 'json' or 'text' (optional)json
ODOO_API_KEYYesYour Odoo API key
ODOO_USERNAMEYesYour Odoo username (email address)
REDIS_ENABLEDNoWhether to enable Redis caching (optional)true
REDIS_DEFAULT_TTLNoDefault TTL for cached items in seconds (optional)300

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_projects
List available projects in Odoo. Args: limit: Maximum number of projects to return (default: 50) offset: Offset for pagination (default: 0) Returns: List of projects with their ID and name
list_tasks
List available tasks in Odoo. Args: project_id: Filter by project ID (optional) limit: Maximum number of tasks to return (default: 50) offset: Offset for pagination (default: 0) Returns: List of tasks with their ID, name and project
list_timesheets
List existing timesheet entries. Args: date_from: Start date (format YYYY-MM-DD, optional) date_to: End date (format YYYY-MM-DD, optional) project_id: Filter by project ID (optional) limit: Maximum number of entries (default: 100) offset: Offset for pagination (default: 0) all_users: If False, filter on current user (default: False) Returns: List of timesheet entries
create_timesheet
Create a new timesheet entry. Args: project_id: Project ID hours: Number of hours worked description: Description of work done task_id: Task ID (optional) date_entry: Entry date in YYYY-MM-DD format (default: today) Returns: Confirmation with created entry ID
update_timesheet
Update an existing timesheet entry. Args: timesheet_id: ID of entry to update hours: New number of hours (optional) description: New description (optional) date_entry: New date in YYYY-MM-DD format (optional) Returns: Update confirmation
delete_timesheet
Delete a timesheet entry. Args: timesheet_id: ID of entry to delete Returns: Deletion confirmation
get_timesheet_summary_by_employee
Get a summary of hours logged by employee for a given period. Args: date_from: Start date (format YYYY-MM-DD) date_to: End date (format YYYY-MM-DD) expected_hours_per_day: Expected hours per working day (default: 8.0) Returns: Summary of hours by employee with comparison to expected hours
list_expense_categories
List available expense categories (service type products). Args: limit: Maximum number of categories to return (default: 100) offset: Offset for pagination (default: 0) Returns: List of categories with their ID and name
list_expenses
List existing expenses. Args: date_from: Start date (format YYYY-MM-DD, optional) date_to: End date (format YYYY-MM-DD, optional) state: Filter by state: draft, reported, approved, done, refused (optional) limit: Maximum number of entries (default: 50) offset: Offset for pagination (default: 0) Returns: List of expenses
create_expense
Create a new expense report. Args: name: Expense name/title product_id: Expense category ID (see list_expense_categories) total_amount: Total expense amount description: Detailed description (optional) date_expense: Expense date in YYYY-MM-DD format (default: today) quantity: Quantity (default: 1.0) Returns: Confirmation with created expense ID
update_expense
Update an existing expense (only if in draft state). Args: expense_id: ID of expense to update name: New name (optional) total_amount: New amount (optional) description: New description (optional) date_expense: New date in YYYY-MM-DD format (optional) payment_mode: Payment mode - "company" (paid by company) or "employee" (paid by employee) (optional) currency: ISO currency code (e.g., "EUR", "USD") (optional) analytic_account_id: Analytic account ID for cost distribution (optional) Returns: Update confirmation
delete_expense
Delete an expense (only if in draft state). Args: expense_id: ID of expense to delete Returns: Deletion confirmation
add_expense_attachment
Add an attachment to an existing expense. Args: expense_id: Expense ID file_path: Absolute path to file to attach filename: Filename in Odoo (optional, uses original filename by default) Returns: Confirmation with created attachment ID
list_expense_attachments
List attachments for an expense. Args: expense_id: Expense ID Returns: List of attachments with their ID and name
list_expense_reports
List expense reports (expense sheets). Args: state: Filter by state: draft, submit, approve, post, done, cancel (optional) limit: Maximum number of reports to return (default: 50) offset: Offset for pagination (default: 0) Returns: List of expense reports with their details
create_expense_report
Create an expense report from selected expenses. Args: name: Report name/title expense_ids: List of expense IDs to include in the report Returns: Confirmation with created report ID
submit_expense_report
Submit an expense report for approval. Args: report_id: ID of the expense report to submit Returns: Confirmation of submission
list_contacts
List contacts (partners) in Odoo. Args: customer: Filter customers (True/False/None for all) supplier: Filter suppliers (True/False/None for all) company: Filter companies (True) or individuals (False) limit: Maximum number of contacts (default: 50) offset: Offset for pagination (default: 0) Returns: List of contacts with their information
get_contact
Get details of a specific contact. Args: contact_id: Contact ID Returns: Complete contact details
create_contact
Create a new contact. Args: name: Contact name email: Email address (optional) phone: Phone number (optional) is_company: True if it's a company, False for individual customer: Mark as customer (default: True) supplier: Mark as supplier (default: False) street: Address (optional) city: City (optional) zip_code: Zip code (optional) parent_id: Parent company ID for contacts (optional) Returns: Confirmation with created contact ID
list_invoices
List invoices in Odoo. Args: invoice_type: Invoice type (out_invoice=customer, in_invoice=supplier, out_refund=customer credit note, in_refund=supplier credit note) state: State (draft, posted, cancel) partner_id: Filter by partner date_from: Start date (YYYY-MM-DD) date_to: End date (YYYY-MM-DD) limit: Maximum number of invoices (default: 50) offset: Offset for pagination (default: 0) Returns: List of invoices
get_invoice
Get details of a specific invoice with its lines. Args: invoice_id: Invoice ID Returns: Complete invoice details
list_sale_orders
List sale orders (quotations/orders). Args: state: State (draft=Quotation, sent=Sent, sale=Sales Order, done=Locked, cancel=Cancelled) partner_id: Filter by customer date_from: Start date (YYYY-MM-DD) date_to: End date (YYYY-MM-DD) limit: Maximum number (default: 50) offset: Offset for pagination (default: 0) Returns: List of orders
get_sale_order
Get details of a sale order with its lines. Args: order_id: Order ID Returns: Complete order details
list_products
List products in Odoo. Args: product_type: Product type (consu=Consumable, service=Service, product=Storable) categ_id: Filter by product category available: Filter products available for sale (True/False) limit: Maximum number (default: 50) offset: Offset for pagination (default: 0) Returns: List of products
get_product
Get details of a specific product. Args: product_id: Product ID Returns: Complete product details
list_employees
List employees in Odoo. Args: department_id: Filter by department limit: Maximum number (default: 50) offset: Offset for pagination (default: 0) Returns: List of employees
get_employee
Get details of a specific employee. Args: employee_id: Employee ID Returns: Complete employee details
list_departments
List departments in Odoo. Args: limit: Maximum number (default: 50) offset: Offset for pagination (default: 0) Returns: List of departments
list_leave_types
List available leave types in Odoo. Args: limit: Maximum number (default: 50) offset: Offset for pagination (default: 0) Returns: List of leave types with their ID and name
list_leave_allocations
List leave allocations. Args: employee_id: Filter by employee ID (optional) leave_type_id: Filter by leave type ID (optional) state: Filter by state: draft, confirm, validate, refuse (optional) limit: Maximum number (default: 50) offset: Offset for pagination (default: 0) Returns: List of leave allocations
create_leave_allocation
Create a leave allocation for employees. Args: leave_type_id: Leave type ID (see list_leave_types) number_of_days: Number of days to allocate name: Allocation name/reason employee_id: Specific employee ID (optional) department_id: Department ID to allocate to all employees in department (optional) all_employees: If True, allocate to all employees (default: False) date_from: Start validity date YYYY-MM-DD (optional) date_to: End validity date YYYY-MM-DD (optional) Returns: Confirmation with created allocation ID(s)
approve_leave_allocation
Approve a leave allocation (change state from draft/confirm to validate). Args: allocation_id: Allocation ID to approve Returns: Confirmation message
list_public_holidays
List public holidays (global time off) from a working calendar. Args: calendar_id: Working calendar ID (default: 1) year: Filter by year (optional) limit: Maximum number of entries (default: 50) offset: Offset for pagination (default: 0) Returns: List of public holidays
create_public_holiday
Create a public holiday in Odoo (global time off on working calendar). Args: name: Holiday name (e.g., "Nouvel An", "Fete nationale") date: Holiday date in YYYY-MM-DD format calendar_id: Working calendar ID (default: 1 = Standard 40 hours/week) Returns: Confirmation with created holiday ID
test_connection
Test the connection to Odoo. Returns: Connection and user information
search_records
Search records in any Odoo model. Args: model: Technical model name (e.g., res.partner, sale.order) field: Field to search on (e.g., name, email) value: Value to search for (partial match with ilike) limit: Maximum number of results (default: 20) offset: Offset for pagination (default: 0) Returns: List of found records
get_rd_project_costs
Get total costs per R&D project from analytic accounts. Args: date_from: Start date (format YYYY-MM-DD, optional) date_to: End date (format YYYY-MM-DD, optional) Returns: Summary of costs by R&D project

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/industream/mcp-odoo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server