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 usUse Cases
Why integrate with Raken
Common scenarios for SaaS companies building Raken integrations for their customers.
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.
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.
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.
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.
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.
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.
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.
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.
Certification expiry monitoring
Sync worker certifications and certification types from Raken to proactively flag expired or missing credentials before assigning workers to specialized tasks.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
From the Blog
Raken integration guides
Deep dives, architecture guides, and practical tutorials for building Raken integrations.
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.