{"name":"io.github.minhhq-a1/odoo-pulse","slug":"minhhq-a1-odoo-pulse","title":null,"description":"An AI business analyst for Odoo ERP (18+) — one-call reports with verdicts, over MCP","url":"https://mcp.market/server/minhhq-a1-odoo-pulse","rating":null,"grade":"B","score":78,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":16,"stars":1,"forks":2,"downloads_week":null,"last_push_at":"2026-08-20T16:05:49.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/minhhq-a1/odoo-pulse","website":"https://github.com/minhhq-a1/odoo-pulse","version":"1.9.1","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"odoo-pulse","version":"1.9.1","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Base URL of the Odoo instance, e.g. https://acme.odoo.com","isRequired":true,"name":"ODOO_URL"},{"description":"Odoo database name","isRequired":true,"name":"ODOO_DB"},{"description":"Odoo login / email","isRequired":true,"name":"ODOO_USERNAME"},{"description":"Odoo API key (used as the password)","isRequired":true,"isSecret":true,"name":"ODOO_API_KEY"},{"description":"Block all write methods when true (default true)","name":"ODOO_READ_ONLY"}]}],"tools":[{"name":"absence_overview","description":"Report who is off and where coverage is thin, in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"aggregate_records","description":"Group and aggregate records server-side (one call instead of pulling rows).","write_action":false,"price_micros":0,"input_schema":null},{"name":"business_pulse","description":"One-call company briefing: sales, leads, receivables, tasks, absences.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_stock","description":"Check on-hand stock per location for products matching a query.","write_action":false,"price_micros":0,"input_schema":null},{"name":"confirm_sale_order","description":"Confirm a quotation into a sales order (sale.order action_confirm).","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_contact","description":"Create a contact (res.partner). Preview unless confirm=True.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_lead","description":"Create a CRM lead/opportunity (crm.lead). Preview unless confirm=True.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_record","description":"Create one record. Returns a preview unless confirm=True.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_task","description":"Create a project task (project.task). Preview unless confirm=True.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_records","description":"Delete one or more records. Returns a preview unless confirm=True.","write_action":true,"price_micros":0,"input_schema":null},{"name":"find_partner","description":"Find contacts/companies (res.partner) by name, email, phone or reference.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_products","description":"Find products (product.product) with on-hand and forecasted quantities.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_invoice","description":"Fetch a single invoice/bill (account.move) with its line items.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_model_fields","description":"Inspect the schema of an Odoo model. Returns each field's label, type, help text, requiredness and relation. Pass `fields` to limit the result to specific field names. Example model: 'res.partner'.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_purchase_order","description":"Fetch a single purchase order with its line items.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_sale_order","description":"Fetch a single sales order with its line items.","write_action":true,"price_micros":0,"input_schema":null},{"name":"inventory_risk","description":"Report stock at risk — shortages and dead stock — in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_activities","description":"List scheduled activities / to-dos (mail.activity).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_applicants","description":"List recruitment applicants (hr.applicant).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_appraisals","description":"List employee appraisals (hr.appraisal).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_approval_requests","description":"List approval requests (approval.request).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_attendances","description":"List attendance records (hr.attendance) - employee check in/out.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_boms","description":"List bills of materials (mrp.bom).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_calendar_events","description":"List calendar meetings (calendar.event).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_courses","description":"List eLearning courses (slide.channel).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_departments","description":"List HR departments (hr.department) with employee headcount.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_documents","description":"List documents from the Documents app (documents.document).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_email_campaigns","description":"List email marketing mailings (mailing.mailing) with engagement stats.","write_action":true,"price_micros":0,"input_schema":null},{"name":"list_employees","description":"List employees (hr.employee).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_engineering_changes","description":"List PLM engineering change orders (mrp.eco).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_equipment","description":"List maintenance equipment / assets (maintenance.equipment).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_event_registrations","description":"List event registrations / attendees (event.registration).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_events","description":"List events (event.event).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_expenses","description":"List employee expenses (hr.expense).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_helpdesk_tickets","description":"List helpdesk tickets (helpdesk.ticket - Odoo Enterprise).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_invoices","description":"List invoices/bills (account.move).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_iot_devices","description":"List IoT devices (iot.device).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_job_positions","description":"List recruitment job positions (hr.job) with expected/recruited counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_knowledge_articles","description":"List Knowledge articles (knowledge.article).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_loyalty_cards","description":"List loyalty / gift cards (loyalty.card).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_loyalty_programs","description":"List loyalty programs / coupons / gift cards (loyalty.program).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_lunch_orders","description":"List lunch orders (lunch.order).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_maintenance_requests","description":"List maintenance requests (maintenance.request).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_manufacturing_orders","description":"List manufacturing orders (mrp.production).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_memberships","description":"List membership lines (membership.membership_line).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_models","description":"List Odoo models (technical name + label). Optionally filter by a case-insensitive substring matched against the model name or label, e.g. 'sale', 'res.partner', 'invoice'.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_notes","description":"List notes (note.note).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_opportunities","description":"List CRM opportunities (crm.lead, type='opportunity').","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_payments","description":"List customer/vendor payments (account.payment).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_payslips","description":"List payroll payslips (hr.payslip).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_pickings","description":"List stock transfers / pickings (stock.picking): deliveries, receipts, internal.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_planning_slots","description":"List planning shifts / slots (planning.slot).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_pos_orders","description":"List Point of Sale orders (pos.order).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_pos_sessions","description":"List Point of Sale sessions (pos.session).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_projects","description":"List projects (project.project).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_purchase_orders","description":"List purchase orders (purchase.order).","write_action":true,"price_micros":0,"input_schema":null},{"name":"list_quality_alerts","description":"List quality alerts (quality.alert).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_quality_checks","description":"List quality checks (quality.check).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_repair_orders","description":"List repair orders (repair.order).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_sale_orders","description":"List sales orders (sale.order).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_sign_requests","description":"List electronic signature requests (sign.request).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_social_posts","description":"List social media posts (social.post).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_subscriptions","description":"List subscriptions (sale.subscription).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_surveys","description":"List surveys (survey.survey) with response counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_tasks","description":"List project tasks (project.task).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_time_off","description":"List time off / leave requests (hr.leave).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_timesheets","description":"List timesheet entries (account.analytic.line with a project set).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_vehicles","description":"List fleet vehicles (fleet.vehicle).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_website_visitors","description":"List website visitors (website.visitor) with visit counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"odoo_version","description":"Check connectivity and return the Odoo server version info.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_groups","description":"Split a comma-separated group list, validated against GROUP_MODULES.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pipeline_review","description":"Report the health of the CRM pipeline, in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"portfolio_health","description":"Portfolio overview: one row per project, joined by id server-side.","write_action":false,"price_micros":0,"input_schema":null},{"name":"procurement_watch","description":"Report purchasing health — late receipts and stale RFQs — in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"production_health","description":"Report manufacturing health — late starts and stuck orders — in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_budget","description":"Report planned vs actual budget per project, line by line.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_dashboard","description":"Everything the project-detail page needs, in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_profitability","description":"Report delivery hours, money and budget burn per project in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_status_report","description":"Report which projects are in trouble, across a portfolio, in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_subtask_hours","description":"Total sub-task hours for one project, filtered server-side, in ONE call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_attachment","description":"Read an ir.attachment: metadata always, base64 content when small enough.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_records","description":"Fetch specific records by their ids. Pass `fields` to limit columns.","write_action":false,"price_micros":0,"input_schema":null},{"name":"receivables_health","description":"Report AR/AP aging and who owes what, in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sales_snapshot","description":"Report how sales are going versus the previous period, in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_count","description":"Count records in a model matching an Odoo domain filter.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_read","description":"Query records from an Odoo model.","write_action":false,"price_micros":0,"input_schema":null},{"name":"standup_digest","description":"Generate a daily standup digest for a project.","write_action":false,"price_micros":0,"input_schema":null},{"name":"team_workload","description":"Report who is over- or under-loaded, in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_records","description":"Update one or more records. Returns a preview unless confirm=True.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":78,"grade":"B","scanned_at":"2026-09-24T05:06:25.591Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T05:06:25.509Z","components":{"code":{"score":25,"max":25,"notes":["83 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 35 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"odoo-pulse","version":"1.9.1","found":true,"license":"MIT","dependencyCount":7,"publishedAt":"2026-08-05T06:44:04.452882Z","repositoryUrl":"https://github.com/minhhq-a1/odoo-pulse"}],"repo":{"found":true,"owner":"minhhq-a1","repo":"odoo-pulse","archived":false,"pushedAt":"2026-08-20T16:05:49Z","stars":1,"forks":2,"openIssues":8,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/169115789?v=4","ownerCreatedAt":"2024-05-07T02:40:34Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/169115789?v=4&s=128","source":"github"},"presence":{"stars":1,"forks":2,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-20T16:05:49.000Z","score":16}}}},"grade_history":[],"reviews":[]}