Skip to content

Time Tracking · Beta

Raken
API integration

Ship Time Tracking features without building the integration. Full Raken API access via Proxy and 50+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Raken

Use Cases

Why integrate with Raken

Common scenarios for SaaS companies building Raken integrations for their customers.

01

Sync field time cards into payroll systems

Payroll and workforce management platforms can pull approved time cards, work logs, pay types, and cost codes from Raken to automate weekly payroll runs and certified payroll reporting without manual data entry.

02

Automate project provisioning from ERPs and accounting systems

ERP and accounting platforms can push new projects, cost codes, members, and crew assignments into Raken the moment a contract is signed, so field teams arrive on site with everything pre-configured in their mobile app.

03

Power real-time safety and risk dashboards

Safety, compliance, and insurance SaaS tools can monitor observations, checklists, toolbox talks, and worker certifications from Raken to flag hazards, track OSHA compliance, and verify that workers have valid credentials for their assignments.

04

Feed job profitability and FP&A dashboards

Financial analytics platforms can sync production insights, material logs, and equipment logs from Raken to deliver executives real-time budget vs. actual hour tracking and predictive profitability views per project.

05

Archive daily reports for audit and litigation defense

Document management and compliance platforms can pull daily reports, checklists, and completed toolbox talks on a schedule to maintain an immutable off-site record of job site conditions.

What You Can Build

Ship these features with Truto + Raken

Concrete product features your team can ship faster by leveraging Truto’s Raken integration instead of building from scratch.

01

Approved time card ingestion with cost code mapping

Poll Raken time cards and work logs, map them to pay types and cost codes, and route labor hours into your payroll or job costing engine.

02

One-click project provisioning

When a project is created in your system, automatically create the Raken project, seed its cost codes, and assign the crew via members project assignment.

03

Safety incident webhook pipeline

Watch Raken observations and checklists and automatically open incident tickets or alerts in your platform when high-priority hazards or failed inspections are logged.

04

Certification expiry monitoring

Sync worker certifications and certification types from Raken to proactively flag expired or missing credentials before assigning workers to specialized tasks.

05

Production insights profitability dashboard

Pull budgeted vs. actual hours and projected gain/loss at the cost code level to render live project margin dashboards for operations and finance teams.

06

Material and equipment usage reporting

Aggregate material logs, equipment logs, and daily reports from Raken into analytics or back-office tools to track consumption and utilization per project.

SuperAI

Raken AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

create_a_raken_oauth_revoke

Revoke a Raken authorization from its access token or refresh token. Both tokens stop working and the user must authorize again. Returns HTTP 200 with no documented response body, whether or not the token existed. Required: token.

list_all_raken_projects

List Raken projects, optionally filtered by name or number (query), status (statuses) or last-updated window (changedSince/changedUntil, range capped to 31 days). Returns: uuid, name, number, startDate, endDate, status, address, externalId.

create_a_raken_project

Create a Raken project. Returns: uuid, name, number, startDate, endDate, status, address, externalId. Required: name, startDate.

get_single_raken_project_by_id

Get one Raken project by UUID. Returns: uuid, name, number, startDate, endDate, status, address, externalId. Required: id.

update_a_raken_project_by_id

Update a Raken project by UUID. PATCH semantics: a null value removes a field. Returns: uuid, name, number, startDate, endDate, status, address, externalId. Required: id.

list_all_raken_project_child_projects

List a project's child projects, created on collaborators' own Raken accounts. Calling this on a child project returns an empty list. Returns: uuid, name, startDate, endDate, status, company, createdBy, updatedBy. Required: project_uuid.

list_all_raken_project_notes

List notes recorded on a project between fromDate and toDate (range capped to 31 days). Returns: uuid, description, category, date, attachments, createdBy, updatedBy, createdAt. Required: project_uuid, fromDate, toDate.

list_all_raken_project_production_insights

List production insights for a project, one item per cost code division. Optionally narrow by date range, cost code UUID or division. Returns: division, budgetedHours, actualHours, completeHoursPercent, remainingHours, completeQuantityPercent, projectedTotalHours, projectedHoursGainOrLoss. Required: project_uuid.

list_all_raken_materials

List materials, optionally only those available to one project (projectUuid). Returns: uuid, name, materialUnit, projects.

create_a_raken_material

Create a material. With projectUuid it is available only to that project; without it, every project on the account can use it. Returns: uuid, name, materialUnit, projects. Required: name, materialUnitUuid.

update_a_raken_material_by_id

Update a material by UUID. PATCH semantics: a null value removes a field. Returns: uuid, name, materialUnit, projects. Required: id.

list_all_raken_material_logs

List material logs for a project by date range (fromDate/toDate) or last-updated window (changedSince/changedUntil, range capped to 31 days). Returns: uuid, date, updatedAt, material, quantity, costCode, attachments. Required: projectUuid.

list_all_raken_material_units

List material units, the units materials are measured in. Returns: uuid, name.

create_a_raken_material_unit

Create a material unit. Returns: uuid, name. Required: name.

list_all_raken_equipment_logs

List equipment logs grouped by deployment, filterable by project, equipment, status, date range or query. Date ranges are capped to 31 days. Returns: uuid, startDate, endDate, equipment, projectUuid, daysOnsite, daysNotInUse, createdBy.

list_all_raken_equipments

List equipment, filterable by condition, deployed project and a free-text query. Returns: uuid, name, rate, frequency, equipmentId, owned, make, model.

list_all_raken_work_logs

List work logs for a project by date range or last-updated window (capped to 31 days). Only COMPLETED work logs unless statuses is set; time cards are nested under their work log. Returns: uuid, date, status, totalHours, description, projectUuid, workLogType, subcontractor. Required: projectUuid.

list_all_raken_pay_types

List pay types, such as Regular Time and Over Time. Returns: uuid, name, code.

list_all_raken_time_cards

List time cards by project, worker or date range (capped to 31 days). deletedFrom with deletedTo returns only deleted cards. A card's work description lives on its work log (workLogUuid). Returns: uuid, workLogUuid, date, totalHours, project, worker, approved, signed.

list_all_raken_classifications

List classifications, filterable by status and last-updated window (changedSince needs changedUntil). Returns: uuid, name, status, createdAt, updatedAt.

create_a_raken_classification

Create a classification. Returns: uuid, name, status, createdAt, updatedAt. Required: name.

list_all_raken_budgets

List budgets for a project: budgeted hours and materials per cost code. Returns: costCode, budgetedHours, budgetedMaterials. Required: projectUuid.

list_all_raken_checklist_types

List checklist types, filterable by class and status. The maximum limit is 100. Returns: uuid, createdAt, status, class, name, createdBy, updatedAt.

list_all_raken_user_infos

Get the profile of the Raken user who authorized this connection (the user behind the access token). Returns: sub, firstName, lastName, email, role, companyUuid.

list_all_raken_shifts

List shifts, optionally filtered by project and status. Returns: uuid, code, name, status.

create_a_raken_shift

Create a shift. The code is at most 5 characters and the name at most 30. Returns: uuid, code, name, status. Required: code, name.

update_a_raken_shift_by_id

Update a shift by UUID. PATCH semantics: a null value removes a field. Returns: uuid, code, name, status. Required: id.

list_all_raken_toolbox_talks

List toolbox talks, filterable by status (ACTIVE only by default). Returns: uuid, name, status, contentUrl.

list_all_raken_toolbox_talks_pasts

List past toolbox talks, filterable by project, talk, attending members and creation date range (capped to 31 days). Returns: uuid, project, scheduleDate, status, talk, type, attendees, signaturePhotos.

list_all_raken_daily_reports

List daily reports for a project by date range, status (COMPLETED only by default) or last-updated window (capped to 31 days). Returns: uuid, status, projectUuid, reportDate, createdBy, updatedBy, signedBy, signedAt. Required: projectUuid.

list_all_raken_observations

List observations. One of projectUuids or the deprecated projectUuid is required. Filter by status, category, type, priority, created range (capped to 31 days) or last-updated window. Returns: uuid, assignees, attachments, category, createdAt, createdBy, description, location.

get_single_raken_observation_by_id

Get one observation by UUID. Returns: uuid, assignees, attachments, category, createdAt, createdBy, description, location. Required: id.

list_all_raken_certification_types

List certification types, searchable by name and description (query) and filterable by created or updated ranges (capped to 31 days). Returns: uuid, name, description, createdBy, updatedBy, createdAt, updatedAt.

list_all_raken_member_projects

List the projects a member is assigned to (ACTIVE projects only unless statuses is set). Returns: uuid, name, teamType. Required: member_uuid.

create_a_raken_member

Create a member: a worker (ROLE_WORKER) or a team member who can log in. Email is required only for team members, who receive an invite. Returns: uuid, firstName, lastName, role, email, phoneNumber, username, title. Required: firstName, lastName, role, projectUuids.

get_single_raken_member_by_id

Get one member by UUID, including time settings, project UUIDs and certifications. Returns: uuid, firstName, lastName, role, email, phoneNumber, username, title. Required: id.

list_all_raken_members

List members, filterable by query, status (ACTIVE only by default), project, classification, role or last-updated window. Returns: uuid, firstName, lastName, role, email, phoneNumber, username, title.

update_a_raken_member_by_id

Update a member by UUID. PATCH semantics: a null value removes a field. Returns: uuid, firstName, lastName, role, email, phoneNumber, username, title. Required: id.

list_all_raken_checklists

List checklists, filterable by project, status (COMPLETED by default), creator, template, type, created range or checklist date range. The maximum limit is 100. Returns: uuid, name, projectUuid, templateUuid, pdfUrl, createdAt, updatedAt, status.

get_single_raken_checklist_by_id

Get one checklist by UUID, including its sections, questions and responses. Returns: uuid, name, projectUuid, templateUuid, pdfUrl, createdAt, updatedAt, status. Required: id.

list_all_raken_checklists_templates

List checklist templates, filterable by status (ACTIVE by default) and checklist type. The maximum limit is 100. Returns: uuid, name, createdAt, updatedAt, status, checklistType.

create_a_raken_certification

Create a certification of a given certification type. Returns: uuid, name, createdBy, updatedBy, createdAt, updatedAt, certificationType. Required: name, certificationTypeUuid.

list_all_raken_certifications

List certifications, filterable by certification type and by created or updated ranges (capped to 31 days). Returns: uuid, name, createdBy, updatedBy, createdAt, updatedAt, certificationType.

update_a_raken_certification_by_id

Update a certification by UUID. PATCH semantics: a null value removes a field. Returns: uuid, name, createdBy, updatedBy, createdAt, updatedAt, certificationType. Required: id, name, certificationTypeUuid, certificationTypeName.

create_a_raken_cost_code

Create a cost code for a project. Returns: uuid, code, division, description, createdAt, updatedAt. Required: code, division, projectUuid.

list_all_raken_cost_codes

List cost codes, optionally for one project (projectUuid) or a last-updated window (capped to 31 days). Returns: uuid, code, division, description, createdAt, updatedAt.

update_a_raken_cost_code_by_id

Update a cost code's division or description by UUID. PATCH semantics: a null value removes a field. Returns: uuid, code, division, description, createdAt, updatedAt. Required: id.

create_a_raken_group

Create a group. Returns: uuid, class, createdBy, updatedBy, createdAt, updatedAt, name. Required: name, class.

list_all_raken_groups

List groups, searchable by name and class and filterable by class name, created or updated ranges (capped to 31 days). Returns: uuid, class, createdBy, updatedBy, createdAt, updatedAt, name, projectUuids.

update_a_raken_group_by_id

Update a group by UUID. PATCH semantics: a null value removes a field. Returns: uuid, class, createdBy, updatedBy, createdAt, updatedAt, name, projectUuids. Required: id, name, class.

list_all_raken_project_members

List the members assigned to a project, filterable by status (ACTIVE only by default), classification and role. Returns: uuid, firstName, lastName, role, email, phoneNumber, username, title. Required: project_uuid.

create_a_raken_members_project_assignment

Batch add, remove or replace project assignments for up to 100 members (projectAssignmentType). Pick projects by projectUuids or projectState. Best effort: problems are ignored, so a 200 does not prove every change applied. Returns HTTP 200 with no documented response body. Required: memberUuids, projectAssignmentType.

Why Truto

Why use Truto’s MCP server for Raken

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 850+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Raken in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Raken account

Use Truto’s frontend SDK to connect your customer’s Raken account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Raken

Truto’s Proxy API is a 1-to-1 mapping of the Raken API. You call us, we call Raken, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Raken’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Raken on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How does authentication work for the Raken integration?

Truto handles the Raken OAuth flow end-to-end, including token refresh and the OAuth revoke endpoint. Your end users connect their Raken account through a hosted or embedded flow, and your app receives a secure connection reference to call Raken on their behalf.

How do we keep data in sync without re-fetching everything?

Raken's API uses last-updated windows (changedSince / changedUntil) capped at 31 days for entities like projects, work logs, material logs, and classifications. Truto supports frequent scheduled polling against these parameters so you can run hourly or daily delta syncs and maintain state efficiently.

Can we write data back to Raken, not just read from it?

Yes. The integration supports create and update operations on projects, members, materials, material units, shifts, classifications, cost codes, groups, certifications, and member-to-project assignments, so you can fully automate project onboarding from your system into Raken.

How do we pull time card data mapped to cost codes and pay types?

Raken nests time cards under work logs. You can list work logs, time cards, pay types, and cost codes separately through Truto and join them in your system to produce payroll-ready records tied to the right project, worker, and labor category.

What safety data can we access?

You can list observations (with single observation lookup), checklists and checklist templates, checklist types, past toolbox talks with completion records, upcoming toolbox talks, certifications, and certification types to power real-time safety monitoring and compliance archives.

Are there caveats when bulk-assigning members to projects?

Yes. Raken's bulk member assignment endpoint is best-effort: individual failures are silently ignored by the API, so your integration should validate assignments afterward by listing project members to confirm the crew was fully provisioned.

Raken

Get Raken integrated into your app

Our team understands what it takes to make a Raken integration successful. A short, crisp 30 minute call with folks who understand the problem.