NeetoInvoice MCP and CLI: let AI tools handle time tracking and invoicing

Connect NeetoInvoice to Claude, ChatGPT, Cursor, Codex, and other AI tools. Log time in plain language, see what's unbilled, create and send invoices, and automate timesheets and payroll from your terminal.

What is NeetoInvoice MCP?

NeetoInvoice MCP lets AI tools like Claude and ChatGPT work with your NeetoInvoice account. Once it's connected, you can log time by describing what you did, ask what's still unbilled for a client, turn those hours into an invoice, and check who hasn't filled in their timesheet, in the same conversation where you're already working.

MCP stands for Model Context Protocol, an open standard for connecting AI tools to the apps you use. You don't need to know anything about it. You connect once, sign in to NeetoInvoice, and start asking.

YouTube video placeholderNeetoInvoice MCP and CLI demo (about 6 minutes)

YouTube walkthrough: connect NeetoInvoice to Claude, log a day of work in one sentence, review unbilled hours for a client, create and send an invoice, then run a timesheet reminder from the terminal with the CLI.

Your AI tool talks to the NeetoInvoice MCP server. NeetoInvoice hosts it, so there's nothing to install or keep updated, and every workspace uses the same address:

https://connect.neetoinvoice.com/mcp/messages

When you connect, you sign in with your NeetoInvoice account and pick your workspace. The assistant then works as you: it sees only what you can see, and does only what your role allows. It can work with clients and recipients, projects and project members, time entries, invoices, team members, PTO, and your payroll and timesheet reports. You never name a tool; you ask in plain language. The full list is in the NeetoInvoice MCP tools reference.

NeetoInvoice also has a command-line tool, the NeetoInvoice CLI. It works with the same account, but runs in your terminal, in scripts, and in scheduled jobs. It's open source, so you can read exactly what it does, change it, and build on it.

Real prompts for real work

These are real prompts for real time tracking and invoicing work. Copy any of them and try it with Claude, ChatGPT, or another AI tool. For repeatable jobs in automation, we have included CLI examples too.

Ask NeetoInvoice questions

NeetoInvoice isn't only somewhere you record hours. It's something you can ask questions about. Try these:

Which invoices haven't been paid yet?

Which invoices are past their due date?

How much have we invoiced Acme this quarter?

What time is still unbilled on the Acme website project for September?

How many hours did each person log last week?

Did Oliver miss any timesheet days this month?

Who's on the Website redesign project, and at what hourly rate?

How much PTO does Oliver have left?

How many loss-of-pay days did the team have last month?

Which clients have we archived?

The assistant reads your invoices, time entries, and reports and works out the answer. For jobs that repeat every week, the CLI is the better fit. See MCP or CLI.

Track time

Log time in one sentence

Log 3 hours yesterday on Acme, Website redesign, Design. Note: reworked the pricing page mockups.

The assistant finds the client, project, and task for you, so you don't have to click through menus.

Screen recording placeholderLogging time in Claude

Screen recording: the prompt above, the assistant finding the client, project and task, and the entry appearing in NeetoInvoice.

Log a whole day from your notes

Paste your notes or calendar for the day and ask:

Turn these notes into time entries for today. Match each item to the right client, project and task, and show me the entries before you save them.

Fix a mistake

My time entry on the Acme project for Tuesday should be 4.5 hours, not 5.5. Please fix it.

Billed entries are locked, so the assistant can only change time that hasn't been invoiced yet.

Chase missing timesheets

Check who on the team has missing timesheet days for last week, and list the dates for each person.

Invoice clients

Invoice unbilled time

Create an invoice for Acme for all unbilled time on the Website redesign project in September. Number it INV-2026-042 and make it due in 15 days. Don't send it yet.

The assistant gathers the unbilled entries, creates the invoice from them, and leaves it for you to review.

Image placeholderInvoice created by the assistant

Screenshot of invoice INV-2026-042 in NeetoInvoice, created from September's unbilled time.

Invoice a fixed fee

Create an invoice for Summit for a fixed monthly retainer of $4,000, with the note "October support retainer". Number it INV-2026-043.

Send an invoice

Send invoice INV-2026-042 to Acme's billing contacts, with the PDF attached and a short thank-you message. Send me a copy too.

Follow up on overdue invoices

Find invoices that are more than 15 days past due. Show me the list, then resend each one with a polite reminder once I confirm.

Set things up

Add a new client and project

Add a new client, Summit, with Jane Cooper (jane@summit.com) as the billing contact. Create a Website project for them billed at $120 an hour, with Design and Development tasks, and add Oliver as project manager.

Change someone's rate

Change Sam's hourly rate on the Website redesign project to $95.

Invite your accountant

Invite accountant@example.com to NeetoInvoice with the Accountant role.

Update PTO

Set this month's PTO earned to 1.5 days for oliver@example.com and sam@example.com.

Automate with the CLI

Why have a CLI when MCP exists? Because some jobs shouldn't need an AI at all. These run on a schedule, with nothing but the neetoinvoice binary and the tools you already use, such as jq and curl. No model account, no cost per run, and the same result every time.

Nudge people who missed yesterday's timesheet

day=$(date -d yesterday +%F)   # on macOS: date -v-1d +%F

neetoinvoice team-members list --page-size 100 --json | jq -r '.data[].email' | while read -r email; do
  count=$(neetoinvoice reports missing-entries --user-email "$email" --start-date "$day" --end-date "$day" --json | jq '.data.count')
  if [ "$count" -gt 0 ]; then
    curl -s -X POST -H "Content-Type: application/json" \
      -d "$(jq -n --arg text "$email hasn't logged time for $day" '{text: $text}')" "$SLACK_WEBHOOK_URL"
  fi
done

Weekends, holidays, and PTO don't count as missing, so this is safe to run every weekday.

Weekly hours report

Every Monday, write last week's hours per person to a CSV.

START=$(date -d "7 days ago" +%F)   # on macOS: date -v-7d +%F
END=$(date -d yesterday +%F)        # on macOS: date -v-1d +%F

neetoinvoice reports timesheet-summary --start-date "$START" --end-date "$END" --json \
  | jq -r '.data.users[] | [.user_name, .user_email, .total_hours] | @csv' > "hours-$START.csv"

Monthly payroll export

neetoinvoice reports payroll-summary --month 9 --year 2026 --json \
  | jq -r '.data.rows[] | [.user_name, .user_email, .working_days, .present_days, .lop_days] | @csv' > payroll-2026-09.csv

Review unbilled time before invoicing

Export a project's unbilled hours so someone can check them before the invoice goes out.

page=1
while :; do
  out=$(neetoinvoice time-entries list --client "$CLIENT_ID" --project "$PROJECT_ID" \
    --start-date 2026-09-01 --end-date 2026-09-30 --page "$page" --page-size 100 --json) || exit 1
  echo "$out" | jq -r '.data[] | [.recorded_on, .user_name, .task_name, .hours, .notes] | @csv'
  [ "$(echo "$out" | jq '.pagination.total_pages')" -le "$page" ] && break
  page=$((page + 1))
done > unbilled-september.csv

Log time from another tool

Record time from your own tools, such as a pairing timer or a calendar sync.

neetoinvoice time-entries create \
  --client "$CLIENT_ID" --project "$PROJECT_ID" --task-id "$TASK_ID" \
  --user-email oliver@example.com --recorded-on "$(date +%F)" \
  --hours 2.5 --notes "Pairing session on the checkout flow"

Add PTO every month

# crontab entry (cron needs the \% escapes): runs on the 1st of every month
0 6 1 * * neetoinvoice monthly-ptos update-earned --email oliver@example.com --email sam@example.com --month "$(date +\%-m)" --year "$(date +\%Y)" --pto-earned 1.5

Add new hires

neetoinvoice team-members create --email oliver@example.com --email sam@example.com --role "Regular User"

Let a coding agent build it for you

You don't have to write these scripts yourself. Claude Code, Codex, or another coding agent can write the automation and use the open-source NeetoInvoice CLI to work with your account. Run neetoinvoice setup claude (or setup codex, setup cursor) once, then ask:

Every weekday at 10 AM, use the NeetoInvoice CLI to message anyone who didn't log time yesterday on Slack. Write the script, test it, and set up the cron job.

Using the NeetoInvoice CLI, write a script that exports last month's hours per person and per project to a spreadsheet for payroll.

You get the convenience of a chat, and the result is a script you can read, run, and commit.

Screen recording placeholderClaude Code building a NeetoInvoice automation

Terminal recording: the timesheet reminder prompt, Claude Code running neetoinvoice commands, writing the script, and adding the cron job.

MCP or CLI: which should you use?

Both work with the same clients, projects, and time entries. Pick based on how the work reaches NeetoInvoice.

Use MCP when:

  • The details are in your head or your chat. "Three hours on the Acme mockups yesterday" becomes a time entry without clicking through menus.
  • You want to review before billing. Checking unbilled time, creating an invoice, and sending it works best as a conversation.
  • You're listing or sending invoices. Finding unpaid invoices and sending them to clients happens through MCP.
  • You don't use a terminal. NeetoInvoice hosts the server. There's nothing to install.

Use the CLI when:

  • No AI should be in the loop. A cron job runs the CLI with nothing but the binary. No model account, no cost per run.
  • The output feeds another program. Payroll and timesheet reports come out as JSON for jq, a spreadsheet, or your payroll system.
  • You need taxes or expenses on an invoice. The CLI can create invoices with tax details and expenses from a JSON file.
  • The run has to be repeatable. A command records exactly what ran and does the same thing every time.

You can also have both. With neetoinvoice setup claude, your AI assistant drives the CLI for you, so a plain-language request still ends in a command you can read and reuse.

Connect NeetoInvoice to your AI tool

Claude

  1. In Claude, open Customize, then Connectors, click Add, and choose Add custom connector.
  2. Name it NeetoInvoice, paste https://connect.neetoinvoice.com/mcp/messages, and click Continue.
  3. Sign in to NeetoInvoice and choose your workspace and permissions.

This works in Claude on the web, desktop, and mobile. On a Claude Team or Enterprise plan, an owner adds the connector first under Organization settings, then Connectors.

Screen recording placeholderConnecting NeetoInvoice to Claude

Screen recording of the three steps above, ending with a first prompt.

ChatGPT

  1. In ChatGPT, open Settings, then Security and login, and turn on Developer mode.
  2. Go to chatgpt.com/plugins and click +.
  3. Name it NeetoInvoice, set the connection to Server URL, and paste https://connect.neetoinvoice.com/mcp/messages.
  4. Leave authentication on OAuth, accept the notice, and click Create. Then sign in to NeetoInvoice.

Claude Code

claude mcp add --transport http neetoinvoice https://connect.neetoinvoice.com/mcp/messages

Then start Claude Code, run /mcp, pick neetoinvoice, and sign in.

Cursor, Codex, VS Code, Windsurf, and Gemini CLI

Each of these connects to the same server address. The NeetoInvoice MCP setup guide has the exact configuration for each one.

To check the connection, ask your assistant: "List my NeetoInvoice workspaces."

Install the NeetoInvoice CLI

macOS with Homebrew:

brew install neetozone/tap/neetoinvoice

macOS or Linux:

curl -fsSL https://neetoinvoice.com/cli/install.sh | sh

Windows (PowerShell):

irm https://neetoinvoice.com/cli/install.ps1 | iex

Then sign in. This opens your browser, and there's no API key to manage:

neetoinvoice login --subdomain your-workspace

To teach your AI coding assistant how to use the CLI, run one of these from your project folder:

neetoinvoice setup claude      # Claude Code
neetoinvoice setup cursor      # Cursor
neetoinvoice setup codex       # Codex
neetoinvoice setup copilot     # GitHub Copilot
neetoinvoice setup gemini      # Gemini CLI
neetoinvoice setup windsurf    # Windsurf

Every command supports --json for scripts and --toon, a compact format that uses fewer tokens when an AI tool reads the output. See the NeetoInvoice CLI reference for every command.

Permissions and safety

  • Your assistant works as you. When you sign in with NeetoInvoice, it sees only what you can see and does only what your role allows. Someone who can only see their own time can't read the whole team's through AI.
  • You choose the access. Read is always on. Create and update lets it log time, create invoices, and manage clients and projects. Delete lets it delete unbilled time entries, remove recipients and project members, and deactivate team members. Leave both off for a read-only connection.
  • Billed time is locked. Time that's already on an invoice can't be edited or deleted.
  • Sending is explicit. Invoices go out only when you ask, and only to the client's existing billing contacts.
  • You can disconnect anytime. Remove the NeetoInvoice connector from your AI tool and its access ends.

Creating and sending invoices emails your clients. A good habit is to ask your assistant to show you the invoice before it sends anything, as several prompts above do.

Open source

The NeetoInvoice CLI is open source on GitHub. You can read every command, see exactly what it sends to NeetoInvoice, and adapt it to your own workflows. It's written in Go and runs on macOS, Linux, and Windows.

The CLI is built on neeto-cli-commons, the shared foundation behind every Neeto CLI, so what you learn in one works the same way in the others.

Found a bug or want a new command? Open an issue or a pull request.

Frequently asked questions

Do I need to know what MCP is?

No. Connect NeetoInvoice to your AI tool once, sign in, and ask in plain language.

Can ChatGPT log my time in NeetoInvoice?

Yes. Connect ChatGPT to the NeetoInvoice MCP server and it can log time, show unbilled hours, create and send invoices, and run timesheet reports, within your permissions. Today you add NeetoInvoice to ChatGPT as a custom connector in Developer mode. See Connect NeetoInvoice to your AI tool.

Can Claude create invoices in NeetoInvoice?

Yes. Add NeetoInvoice to Claude as a custom connector and you can ask Claude to gather unbilled time, create an invoice, and send it to your client in plain language.

Can AI mark an invoice as paid?

Not today. Your assistant can list, create, and send invoices, but recording payments still happens in NeetoInvoice.

Can I use NeetoInvoice with Claude Code?

Yes, in two ways. Add the NeetoInvoice MCP server with claude mcp add, or run neetoinvoice setup claude so Claude Code can drive the NeetoInvoice CLI. You can use both.

Can I use NeetoInvoice MCP with Cursor or Codex?

Yes. Cursor, Codex, VS Code with GitHub Copilot, Windsurf, and Gemini CLI all connect to the same NeetoInvoice MCP server. The setup guide has the configuration for each.

Does NeetoInvoice MCP require an API key?

No. You sign in with your NeetoInvoice account and approve access, so there's no key to copy or rotate. Developer tools such as Claude Code, Cursor, and Codex can use a NeetoInvoice API key instead if you prefer, but a key reaches the whole workspace rather than acting as you.

Can I give AI read-only access to NeetoInvoice?

Yes. Read access is always on, while Create and update, and Delete, are separate permissions. Leave them unchecked if you want your AI assistant to look at time and invoices without changing anything.

Can I automate NeetoInvoice without using AI?

Yes. The NeetoInvoice CLI works directly from your terminal, shell scripts, and cron jobs. You don't need Claude, ChatGPT, or another AI service to use it.

Is the NeetoInvoice CLI open source?

Yes. It's on GitHub, and you can use it, read it, and change it.

Where is the NeetoInvoice MCP server hosted?

NeetoInvoice hosts the MCP server at https://connect.neetoinvoice.com/mcp/messages. You don't need to download or run a server yourself.

Does NeetoInvoice MCP work on the free plan?

Yes. NeetoInvoice's free plan includes all features, including the MCP server and the CLI.

Bereit, Ihren Zeitverfolgungs- & Rechnungsprozess zu vereinfachen?

Erleben Sie jetzt die Einfachheit von NeetoInvoice!