Integration

Productive integration

Productive is agency management software: projects, tasks, docs, time tracking, resource scheduling, sales deals, budgets and invoicing. List and read projects, task lists, tasks, todos, comments, people, companies, deals, services, time entries, bookings, invoices, payments, expenses, docs and reports; create and update tasks, todos, comments, companies, deals, time entries and bookings, add contact entries, start and stop timers, write docs in markdown, archive or restore projects. Answers follow JSON:API: each record is data.id, data.attributes and data.relationships, and writes take a resource_type (updates also resource_id, the record's id) plus links in relationships. Not exposed: organization settings, users and permissions, webhooks, integrations, invoice and purchase order sending, bulk routes. People and contact records carry personal data. Authentication is an API token (Settings > API integrations) sent in X-Auth-Token with the organization id in X-Organization-Id.

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in Productive.Built from the 87 Productive tools below, on the connection you add once.

What you can do with Productive

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Booking, 5 operations

  • create_bookingCreate bookingPOSTBooks a person (relationships: person, plus a service for work or an event for an absence) from started_on to ended_on, by hours per day, percentage or total time.
  • delete_bookingDelete bookingDELETEDeletes a booking by id.
  • get_bookingGet bookingGETReturns one booking by id: dates, booking method, time per day, total time, percentage, note, approval and cancellation state, and relationships (person, service or absence event, task).
  • list_bookingsList bookingsGETLists bookings (people scheduled on services or absences), filtered with filter (person_id, project_id, event_id, after, before, approval_status, draft...). Paginated.
  • update_bookingUpdate bookingPATCHUpdates a booking: dates, time, total time, percentage, draft, note. Attributes left out keep their value.

Comment, 5 operations

  • create_commentCreate commentPOSTPosts a comment, authored by the token's owner, on a task, deal, company, invoice, person or discussion given in relationships. body is HTML.
  • delete_commentDelete commentDELETEDeletes a comment by id.
  • get_commentGet commentGETReturns one comment by id: HTML body, draft, hidden and pinned state, reactions, timestamps, and what it is attached to (task, deal, company...).
  • list_commentsList commentsGETLists comments, filtered with filter (task_id, project_id, company_id, discussion_id, page_id, draft...). Comment bodies are HTML. Paginated.
  • update_commentUpdate commentPATCHEdits a comment (body, hidden). Its author cannot change. Attributes left out keep their value.

Task, 5 operations

  • create_taskCreate taskPOSTCreates a task in a project's task list: title and the project and task_list relationships are required; assignee, workflow_status and parent_task (for a subtask) can also be set.
  • delete_taskDelete taskDELETEPermanently deletes a task by id.
  • get_taskGet taskGETReturns one task by id: title, description, dates, estimates and tracked time, counters, custom fields, and its relationships (project, task list, assignee, workflow status).
  • list_tasksList tasksGETLists tasks (work items inside a project's task lists), filtered with filter (project_id, task_list_id, assignee_id, workflow_status_id, status 1 open / 2 closed, due dates...). Paginated.
  • update_taskUpdate taskPATCHUpdates a task: title, description, dates, estimate, private, closed, and through relationships its assignee, workflow status or task list. Attributes left out keep their value.

Time entry, 5 operations

  • create_time_entryCreate time entryPOSTLogs time: date and time (minutes) are required, and the person and service go in relationships (a task is optional). Returns the created time entry.
  • delete_time_entryDelete time entryDELETEDeletes a time entry by id.
  • get_time_entryGet time entryGETReturns one time entry by id: date, time and billable time in minutes, note, approval state, costs, and relationships (person, service, task).
  • list_time_entriesList time entriesGETLists time entries, filtered with filter (person_id, project_id, service_id, task_id, after, before, status...). Each has the date, minutes worked and note. Paginated.
  • update_time_entryUpdate time entryPATCHUpdates a time entry: date, time in minutes, note. Attributes left out keep their value.

Todo, 5 operations

  • create_todoCreate todoPOSTAdds a todo (checklist item) to a task or a deal: description and a task or deal relationship are required; an assignee is optional. due_date applies to deal todos only.
  • delete_todoDelete todoDELETEDeletes a todo by id.
  • get_todoGet todoGETReturns one todo by id: its text (description), closed state, due date, position, and the task or deal and assignee it belongs to.
  • list_todosList todosGETLists todos (checklist items on tasks or deals), filtered with filter (task_id, deal_id, assignee_id, status open or closed, due_date). Paginated.
  • update_todoUpdate todoPATCHUpdates a todo: tick it off with closed, change its description or due_date, or reassign it through relationships. Attributes left out keep their value.

Company, 4 operations

  • create_companyCreate companyPOSTCreates a client company. name is required; billing_name, vat, default_currency, company_code, domain and due_days are optional.
  • get_companyGet companyGETReturns one company by id: name, billing name, VAT, currency, payment terms, domains, contact details, tags and custom fields.
  • list_companiesList companiesGETLists client companies, filtered with filter (name, query, status active or archived, company_code, project_id...). Paginated.
  • update_companyUpdate companyPATCHUpdates a company: name, billing_name, vat, default_currency, company_code, domain, due_days. Attributes left out keep their value.

Contact entry, 4 operations

  • create_contact_entryCreate contact entryPOSTAdds a contact entry (address, email, phone, website, bill_from or bill_to) to a company or a person: type and name are required, and the company or person goes in relationships.
  • delete_contact_entryDelete contact entryDELETEDeletes a contact entry by id.
  • get_contact_entryGet contact entryGETReturns one contact entry by id: type, name, email, phone, address, city, country, website, VAT and billing flags.
  • list_contact_entriesList contact entriesGETLists contact entries (addresses, emails, phones, websites, billing details of companies and people), filtered with filter (company_id, person_id, contactable_type...). Paginated.

Deal, 4 operations

  • create_dealCreate dealPOSTCreates a sales deal (budget false) or a production budget (budget true): name and start date are required, the client company in relationships, and a responsible person.
  • get_dealGet dealGETReturns one deal or budget by id: name, number, dates, probability, deal value, budget and invoicing figures, and relationships (company, responsible, deal_status stage, pipeline, project).
  • list_dealsList dealsGETLists deals and budgets, filtered with filter (status, type: sales deal or budget, company_id, pipeline_id, deal_status_id, project_id...). Paginated.
  • update_dealUpdate dealPATCHUpdates a deal or budget: name, dates, and through relationships its responsible person or pipeline stage (deal_status). Attributes left out keep their value.

Timer, 3 operations

  • get_timerGet timerGETReturns one timer by id: when it started and stopped, its total time, the person, and the time entry it fills.
  • list_timersList timersGETLists timers, running and stopped, filtered with filter (person_id, time_entry_id, started_at, stopped_at).
  • start_timerStart timerPOSTStarts a timer on a service or a time entry, given in relationships. Returns the running timer.

Custom field, 2 operations

  • get_custom_fieldGet custom fieldGETReturns one custom field definition by id: name, data type, the record type it applies to (customizable_type), required and archived state, and its options.
  • list_custom_fieldsList custom fieldsGETLists custom field definitions, filtered with filter (customizable_type, the record type such as tasks, projects or people; project_id, name, archived).

Discussion, 2 operations

  • get_discussionGet discussionGETReturns one discussion by id: the highlighted excerpt, when it was resolved, its subscribers and its page.
  • list_discussionsList discussionsGETLists discussions (comment threads on parts of a doc), filtered with filter (page_id, status active or resolved).

Expense, 2 operations

  • get_expenseGet expenseGETReturns one expense by id: name, date, amount with and without tax, billable amount, approved, rejected and invoiced state, and its deal, service and vendor.
  • list_expensesList expensesGETLists expenses, filtered with filter (deal_id, project_id, person_id, approval_status, date_after, date_before...). Paginated.

Folder, 2 operations

  • get_folderGet folderGETReturns one folder by id: name, position, archived date, hidden flag and its project.
  • list_foldersList foldersGETLists folders (top-level groups in a project that hold its task lists), filtered with filter (project_id, status, query). Paginated.

Invoice, 2 operations

  • get_invoiceGet invoiceGETReturns one invoice by id: number, subject, invoiced, due, sent and paid dates, currency, amounts with and without tax, paid and unpaid amounts, and its company and issuer.
  • list_invoicesList invoicesGETLists invoices, filtered with filter (company_id, deal_id, invoice_status, payment_status, invoiced_on, number...). Amounts and status per invoice. Paginated.

Page, 2 operations

  • get_pageGet pageGETReturns one doc page by id: title, body (ProseMirror JSON), its place in the doc hierarchy (root and parent page), attachments and sharing state.
  • list_pagesList pagesGETLists docs and their subpages, filtered with filter (project_id, root_page_id for the pages of one doc, parent_page_id, query...). Paginated.

Payment, 2 operations

  • get_paymentGet paymentGETReturns one payment by id: amount, currency, paid or written-off date, note and its invoice.
  • list_paymentsList paymentsGETLists invoice payments, filtered with filter (invoice_id, company_id, paid_after, paid_before...).

Person, 2 operations

  • get_personGet personGETReturns one person by id: name, email, job title, contact details, joined, deactivated and last-seen dates, and relationships (company, manager, teams). Returns personal data.
  • list_peopleList peopleGETLists people (users, external contacts and placeholders), filtered with filter (status 1 active / 2 deactivated, person_type, email, query, company_id...). Returns personal data. Paginated.

Project, 2 operations

  • get_projectGet projectGETReturns one project by id: name, number, project type, archived date, template flag, custom fields, and its relationships (company, project manager, workflow).
  • list_projectsList projectsGETLists the projects of the organization (name, number, project type, archived date, custom fields), filtered with filter (company_id, status 1 active / 2 archived, project_type...). Paginated.

Service, 2 operations

  • get_serviceGet serviceGETReturns one service by id: name, billing type, unit, price, budgeted, worked and booked time, revenue and cost, and its deal and service type.
  • list_servicesList servicesGETLists services (billable lines of a deal or budget that time and bookings are tracked against), filtered with filter (deal_id, project_id, person_id, for_tracking...). Paginated.

Task list, 2 operations

  • get_task_listGet task listGETReturns one task list by id: name, position, archived date, and its project, folder and board.
  • list_task_listsList task listsGETLists task lists (task groups inside a project's folders), filtered with filter (project_id, folder_id, status, query). Project template lists are left out unless one project is asked for.

Workflow, 2 operations

  • get_workflowGet workflowGETReturns one workflow by id: name, archived date and its workflow statuses.
  • list_workflowsList workflowsGETLists the task workflows of the organization (named sets of workflow statuses), filtered with filter (name, archived, query).

Workflow status, 2 operations

  • get_workflow_statusGet workflow statusGETReturns one workflow status by id: name, category, position and color, and its workflow.
  • list_workflow_statusesList workflow statusesGETLists task workflow statuses (the stages a task moves through, each in a category), filtered with filter (workflow_id, project_id, category_id, name). Their ids set a task's workflow_status.

Activity, 1 operation

  • list_activitiesList activitiesGETLists the activity feed: who created, changed or deleted what and when, with before/after values, filtered with filter (task_id, project_id, deal_id, person_id, after, before...).

Append markdown, 1 operation

  • append_page_markdownAppend page markdownPATCHAppends markdown to the end of a doc page; open editors see the change at once. Empty markdown is refused.

Archive, 1 operation

  • archive_projectArchive projectPATCHArchives a project: hides it from active lists, pauses its recurring budgets, marks its open budgets delivered and removes future bookings. Tasks and logged time are kept.

Budget report, 1 operation

  • get_budget_reportGet budget reportGETBudget report: aggregated budget and deal figures (budget total, used and remaining, cost, profit margin, invoiced percentage...) grouped by group (company, project, month...). Paginated.

Create with markdown, 1 operation

  • create_pageCreate pagePOSTCreates a doc page from a markdown body: markdown is required; title, project_id and parent_page_id (to create a subpage) are optional.

Custom field option, 1 operation

  • list_custom_field_optionsList custom field optionsGETLists the options of select custom fields, optionally for one custom_field_id.

Deal status, 1 operation

  • list_deal_statusesList deal statusesGETLists deal statuses (pipeline stages), filtered with filter (pipeline_id, status_id...). Their ids set a deal's stage.

Event, 1 operation

  • list_absence_categoriesList absence categoriesGETLists the absence categories (events) that time off is booked on, such as vacation or sick leave, filtered with filter (name, status, absence_type...).

Holiday, 1 operation

  • list_holidaysList holidaysGETLists public holidays, filtered with filter (holiday_calendar_id, after, before).

Line item, 1 operation

  • list_line_itemsList line itemsGETLists invoice line items, filtered with filter (invoice_id, service_id, expense_id, company_id...).

Lost reason, 1 operation

  • list_lost_reasonsList lost reasonsGETLists the reasons a deal can be marked lost.

Pipeline, 1 operation

  • list_pipelinesList pipelinesGETLists the sales and production pipelines of the organization, optionally filtered by pipeline_type_id.

Project report, 1 operation

  • get_project_reportGet project reportGETProject report: aggregated project figures (worked time, cost, revenue, profit, pending invoicing...) grouped by group (project, company, project_manager, month...), filtered with filter.

Replace body with markdown, 1 operation

  • replace_page_markdownReplace page markdownPATCHReplaces the whole body of a doc page with markdown; open editors see the change at once. Empty markdown is refused.

Restore, 1 operation

  • restore_projectRestore projectPATCHRestores an archived project back to active status.

Service type, 1 operation

  • list_service_typesList service typesGETLists service types (the kinds of work services are made of), filtered with filter (name, status, person_id).

Stop, 1 operation

  • stop_timerStop timerPATCHStops a running timer by id; the answer carries its stopped_at and total_time.

Tag, 1 operation

  • list_tagsList tagsGETLists the tags used in the organization, filtered with filter (taggable_type, name, task_id, project_id, deal_id...).

Task dependency, 1 operation

  • list_task_dependenciesList task dependenciesGETLists dependencies between tasks (blocking, waiting on, linked), filtered with filter (task_id, dependent_task_id, type_id, project_id).

Team, 1 operation

  • list_teamsList teamsGETLists the teams of the organization, filtered with filter (name, query).

Time report, 1 operation

  • get_time_reportGet time reportGETTime report: aggregated time (worked, billable, scheduled, available, capacity...) grouped by group (person, project, month, week, service...), filtered with filter (after, before, person_id...).

Use Productive from Claude Code, Cursor or Codex

Connect Productive in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Productive operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect Productive

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect Productive once

    Add your Productive connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

Productive integration FAQ

What can you do with the Productive integration?

LiveContext exposes 87 operations on Productive, covering booking, comment, task and time entry.

Popular integrations

Browse the whole catalog