API, MCP and Asana
Personal API tokens
A token lets a script or another app talk to the API as you, without your password. Create one in Profile → API tokens; you see the token once, at creation, because we store only a hash of it.
A token deliberately reaches your data, not your account: changing your password or e-mail, turning 2FA on or off, and creating further tokens are all refused for a token. If one leaks, that is a data problem, not a lost account — revoke it and carry on.
Importing history
Moving from another tracker? The bulk endpoint takes up to 500 entries per request and de-duplicates on an id you supply, so an import interrupted halfway can simply be run again without doubling anything. If you tell us which tool you are coming from, we would rather write the import for you than send you to the API.
MCP connector (Claude and friends)
Hourino speaks the Model Context Protocol, so an AI assistant can track for you: „start a timer on the Acme redesign“, „how many hours did I do this week“, „log yesterday's two hours to Acme“.
In Claude Code it is one command:
claude mcp add hourino \
--transport http https://api.hourino.com/api/v1/mcp \
--header "Authorization: Bearer hrn_…"
Connectors inside claude.ai and ChatGPT cannot send a header, so they sign in with OAuth
instead. Add a custom connector pointing at
https://app.hourino.com/api/v1/mcp, sign in to Hourino when the browser
opens and confirm the access — there is nothing to copy and paste. On the consent
screen you decide whether the connector may only read, or write time as well.
The access is listed in Profile → Integrations → Connected apps and disconnecting takes effect immediately. A connector's access is narrower than a personal token: it works only against the MCP endpoint and never touches your account settings.
Worth knowing before you turn it on: descriptions and client names go to the AI provider as part of the conversation. That is your choice to make, which is why the token is personal and revocable.
Asana
Connect your own Asana account (each member connects theirs, so write-backs happen under the right name), import projects and tasks, and track against them. Hours can be written back to the Asana task, so the people who live in Asana see them without opening Hourino.
Suggestions from Google Calendar
Connect your Google Calendar in Profile → Integrations (read only) and your meetings turn into suggestions: hatched „ghosts“ in the Calendar view and a Suggestions from calendar card on the Timer page. One click makes an entry with the start, end, title and — once Hourino has learnt it — the project. Nothing is written on its own.
Tick Assign automatically next time when accepting a suggestion and a rule is saved (event title, organiser or calendar → project); the next similar event arrives with the project filled in and marked learnt, and Log all with a project writes those in one go. You choose which calendars count; all-day, declined and very short events are skipped, and an event you dismiss is not suggested again. Hourino keeps only the title, time, organiser and attendee count, fetched on demand and cached briefly; disconnecting deletes all of it.
The assistant
Where the server has it switched on, Assistant in the sidebar (or
Cmd/Ctrl+K) opens a chat that works with your data: „between 8 and 9
I did X for client Y“, „create client ABC with projects 1 to 6“,
„how many billable hours did I have in August“, „prepare a report for
the team for last month“. It uses the same set of tools as the MCP connector, so
it can do exactly what you can and nothing more.
Nothing is written without you. Reading happens straight away („Looking up projects…“); anything that would change data — start a timer, log time, create a client, set a rate, request an absence — stops and shows a card of the proposed action for you to confirm, edit or reject. Unconfirmed cards survive a reload; a new message discards them. Messages count against a daily quota per workspace (10 on Free, 200 on Pro), conversations are kept for 30 days, and the descriptions and names the assistant reads go to the model provider as part of the conversation — the same trade-off as with the MCP connector.
Rate limits
The API is rate-limited per IP. If you are batching an import, send bulk requests rather than one entry at a time — it is faster for you and gentler on the limit.