[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Log time on Redmine issues from your agent

> Fill your Redmine timesheet from a prompt: your agent finds this week's issues, skips hours already logged and logs the rest with the right activity.

Source: https://cotlet.dev/integrations/redmine-api-mcp-server/log-time-on-issues

It is Friday afternoon, the week's work sits in your head and in a dozen Redmine issues, and each hour still has to be entered one issue at a time with an activity and a comment.

Cotlet does it in your own Redmine account with list\_issues, list\_time\_entries, list\_issue\_options and log\_time, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=redmine) [All Redmine tools](https://cotlet.dev/integrations/redmine-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Redmine do this on its own?

Redmine's Time Entries API can create and update entries, so a script can log time once it knows the issue number, hours and activity ID (checked 16 Oct 2026). It does not decide what you worked on, and it needs your instance address and an API key in the script. There is no official MCP server.

## How you do it in Redmine today

1. Open the issue and click Log time on the issue details page, or enter the time while updating the issue.
2. Type the hours: Redmine accepts 1h, 30m, 1h30, 1:30 and decimals such as 1.5, and shows totals in decimal form.
3. Pick the activity, add a short comment and save. Leave the issue empty to log hours against the project as a whole.
4. Check the totals under Project overview > Spent time > Details or Report, once for every project you worked in.
5. Repeat for every issue. Entries missed on Friday are rebuilt from memory on Monday.

## How to log time on Redmine issues from your agent

Prompt

```
Every Friday, list the issues assigned to me that changed this week, check which of them already have time logged, and log the hours I give you on each with the activity Development.
```

1. 01  
### Collect the candidates  
list\_issues runs for you with status set to all and sorted by update time, so an issue you closed on Wednesday is still on the list. The agent drops issues from projects where you said you do not track time.
2. 02  
### Look at what is already logged  
list\_time\_entries covers the same week with from and to. An issue that already has an entry from you on that day is shown, not logged a second time.
3. 03  
### Resolve the activity  
list\_issue\_options returns the instance's activities. The agent uses the one you named, or the one flagged as the default, and asks if neither exists, because Redmine requires an activity unless a default is configured.
4. 04  
### Convert minutes to decimals  
Redmine stores hours as decimals, where 0.15 is 9 minutes and not 15\. The agent turns "45 minutes" into 0.75 before every log\_time call.
5. 05  
### Log and total it  
log\_time runs once per issue with a comment of 255 characters or fewer. The agent ends with hours per day and per project, so you can compare them with your own record of the week.

### What you get back

Example data

```
Issues you worked on, 12 to 16 Oct: 7
Already logged: #4790 (2h on Mon)
Logged 6 entries, Development, 14.5h:
- #4821 Login loop after password reset: 1.5h (Thu)
- #4825 Invoice PDF footer: 2h (Wed)
Project totals: Billing portal 11h, Intranet 3.5h
Needs you: #4830, no hours given
```

### Other ways to ask

- Log 30 minutes on #4821 today with the comment "Reviewed the fix" and activity Design.
- Every evening, list the issues I updated today and ask me for the hours of each before logging.
- Show my time entries for last month per project, but do not log anything.
- Find days this week with fewer than 6 hours logged and list the issues I touched on those days.

## What Redmine allows, and what to know first

- Redmine requires hours on a time entry, and activity\_id unless the instance has a default activity configured; spent\_on defaults to today.
- The comment of a Redmine time entry is limited to 255 characters, so the agent shortens longer notes instead of failing.
- Redmine shows time totals in decimal hours: 0.15 hours is 9 minutes, not 15.
- Time tracking is a module switched on per project under Settings > Modules, so a project can have issues but no Log time link.
- Each entry belongs to one user and spent-time reports total hours per person, which is why log\_time always logs for the signed-in account.

log\_time changes only your own Redmine data and reach no one else, so it runs without asking first.

Sources: [Redmine Guide: Time tracking](https://www.redmine.org/projects/redmine/wiki/RedmineTimeTracking) · [Redmine Guide: REST API, Time Entries](https://www.redmine.org/projects/redmine/wiki/Rest%5FTimeEntries) · [Redmine Guide: REST API, Enumerations](https://www.redmine.org/projects/redmine/wiki/Rest%5FEnumerations)

## Call log\_time from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/redmine/times \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"issue_id":4821,"hours":1.5,"activity_id":9,"spent_on":"2026-10-15","comments":"Reproduced the login loop and patched the session check"}'
```

Example response

```
{
"time_entry_id": 18433,
"project": "Billing portal",
"issue_id": 4821,
"user": "Dana Whitfield",
"activity": "Development",
"hours": 1.5,
"spent_on": "2026-10-15",
"comments": "Reproduced the login loop and patched the session check"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is redmine\_write → log\_time. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/redmine-api-mcp-server.md#automations)

## Redmine tools this automation uses

__Cotlet Redmine tools used to log time on Redmine issues from your agent__
| Tool | Parameters |
| -------------------- | ----------------------------------------------------------------------- |
| list\_issues | project\_id, assigned\_to\_id, status, tracker\_id, sort, limit, offset |
| list\_time\_entries | project\_id, user\_id, from, to, limit, offset |
| list\_issue\_options | none |
| log\_time | issue\_id, project\_id, hours, activity\_id, spent\_on, comments |

[All 12 Redmine tools with descriptions](https://cotlet.dev/integrations/redmine-api-mcp-server.md#tools)

## Frequently asked questions

### Can it log time on a project instead of an issue?

Yes. Redmine accepts either an issue or a project on a time entry, and the Log time form leaves the issue empty for project-level hours. Pass project\_id instead of issue\_id.

### Is it safe to connect Redmine to Cotlet?

Yes. You sign in to Redmine yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Redmine once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Redmine automations

- [Create Redmine issues from meeting notes](https://cotlet.dev/integrations/redmine-api-mcp-server/create-issues-from-meeting-notes.md)
- [Triage unassigned Redmine issues with an agent](https://cotlet.dev/integrations/redmine-api-mcp-server/triage-unassigned-issues.md)
- [Redmine API and MCP server: every tool](https://cotlet.dev/integrations/redmine-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Redmine.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Redmine.

[Sign up free](https://cotlet.dev/app/signup?app=redmine)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
