opencode

Connect OpenCode to Hello Tracks

Run OpenCode as a hosted agent in NoClick with Hello Tracks wired into its tools handle. It can use Hello Tracks directly while it works. No glue code, nothing to install. Click below to open a ready-to-run agent and connect your account.
Loading preview…
Opens a workflow with 25 tools ready to use.

Set up in minutes

The open button drops you into a guided setup. It asks exactly this, nothing else:
  1. Choose where it runs

    On your computer through your own OpenCode, or hosted in the cloud. The rest of setup adapts to your choice:

  2. Pick what it can do in Hello Tracks

    A preset of real Hello Tracks operations. Each one becomes a tool the agent can call, and it can't touch anything outside the list.

  3. Connect Hello Tracks

    One sign-in. The agent acts through your account, scoped to the operations you picked.

  4. Add your personal MCP link

    The last step mints a private MCP URL for this agent and walks you through exactly this, with your real link filled in. The page flips to Connected the moment your OpenCode first calls in. opencode mcp add only saves the config. OpenCode connects when it starts — run opencode, or restart a running one.

    1. Run this in your terminal

    $opencode mcp add

    2. Choose Remote and paste your server URL

    https://mcp.noclick.app/s/<your-link>

    3. Choose No when asked about OAuth authentication — the link itself is the key

    <your-link> is your personal server URL — setup mints it for you.

Tools OpenCode gets

Pick the operations you want and each becomes a tool the agent can call directly while it works.

Hello Tracks

25 tools
Get Who Am I

Returns the account the API key acts as, its company and the key's id. Any valid key may call it. A wrong, expired, revoked or missing key answers 401.

Get Company

Returns the key's company: contact details, address, location, settings and teams. Any member of the company may call it.

List Members

Lists the company's active members the key may see: admins and company keys see everyone; operators and workers see what the company's visibility settings allow (for example only their own team). The caller is always included. Removed members appear only when asked for by id. No paging: query and max filter the full list.

Get Member

Returns one member in a list of one. An unknown id, or a member the key may not see, answers 404 (`not_found`, "Member not found"). Removed members of the company are returned, with activeStatus.

List Jobs

Lists the company's jobs. Two modes: - **Day list** (none of limit, skip, createdSince, updatedSince, progress): the jobs of one day, `date` or today in the caller's time zone, ordered by route position, at most 5,000. Archived jobs only with includeArchived=true. - **Paged list** (any of limit, skip, createdSince, updatedSince, progress): all dates unless `date` is given, newest first (by last save, or by creation with createdSince), `limit` default 100, with totalCount and hasMore. Archived jobs are left out unless includeArchived=true. Deleted jobs never come back. Looking up by `id` or `externalId` returns the job whatever its archive status and ignores date and assignee; no match gives an empty list. Workers without the company setting workersViewJobCalendar may only list today (give or take four hours); other dates give 403.

Create Jobs

Creates one job (the job object as the body) or several (`{"jobs": [...]}`). A job whose externalId matches an existing job of the company is updated with the fields sent instead of creating a duplicate (upsert), and is set back to normal if it was archived. A job that was deleted in Hellotracks stays deleted: it is not changed, and the answer lists it with `status: "deleted"`. The answer lists one job per job sent, in the same order. Jobs without a location get the location of their place, else their address is geocoded in the background, so the response can still show location 0/0. Jobs that are assigned and dated drop the worker's saved route for that day, workers get the updated jobs, and the company's job webhooks fire. Unknown fields are refused with 400.

Get Job

Returns the job in `items` (one element), archived ones included. A deleted or unknown job answers 404 (`not_found`, "Job not found").

Update Job

Updates the job; only the fields sent change. Always notifies the assigned worker and sends route changes; a changed address (without a location) is re-geocoded in the background. An unknown id gives an empty `items` list. Workers may only change today's jobs unless the company allows workersEditJob.

Delete Job

Deletes the job; it no longer appears in any list. Workers are refused; dispatchers only when the company allows dispatchers to delete jobs. Returns the deleted job in `items`; an unknown id gives an empty list.

Archive Job

Archives the job: it leaves the lists unless includeArchived=true and can be restored. Returns the job in `items`. An unknown or deleted id gives an empty list: a deleted job stays deleted, and restore is the way back.

Restore Job

Sets an archived job back to normal. Returns the job in `items`; an unknown id gives an empty list.

Optimize Route

Optimizes the order of one member's jobs on one day and saves the route. Allowed for admins, dispatchers and the company; workers only when the company allows workersOptimizeRoute (403 otherwise, also for a member the caller cannot see). With solve=false a worker's route that was optimized in the last 3 hours is returned unchanged.

List Places

Lists the places the caller can see. Workers without the company setting workersViewPlaces only see places of their own teams.

Create Place

Creates a place for the company. Workers only when the company allows workersCreatePlaces. Without teams the place goes to the creator's teams; without a location the address is geocoded in the background. Visits of the last 30 days that match the new place are labeled with it.

Get Place

Returns the place in `items` (one element). An unknown place, or one the caller cannot see, answers 404 (`not_found`, "Place not found").

Update Place

Changes the fields sent. extendedData is merged: names sent are set, names sent as null are removed, the others stay. Admins, dispatchers and the company may edit; workers only places they can see when the company allows workersCreatePlaces (403 otherwise).

Delete Place

Deletes one place of the caller's company. Workers are refused. An unknown id, or one that is not a place of the company, gives 403 with the message 'place not found'.

List Zones

Lists the company's zones (geofences). Workers are refused with 403 (code permission_denied).

List Timesheets

Lists clock-in/clock-out entries of the company's members for one day (default today) or a from/until range, with totals. Days are in the caller's time zone; an entry belongs to the day it starts. There is no paging and no limit on the range. Admins, operators and the company key may call it; workers get 403.

Create Timesheet Entry

Adds a clock-in, and optionally a clock-out, for a member, as the dashboard does. clockIn or clockInAt is required; the clock-out must be after the clock-in. Admins, operators and the company key may call it; workers get 403.

Update Timesheet Entry

Moves the clock-in and/or clock-out of an entry, or adds the missing clock-out. At least one time field is required. The answer's entry may have a new id. An unknown or foreign entry is answered with 400 invalid_request. Admins, operators and the company key may call it; workers get 403.

Delete Timesheet Entry

Deletes the entry's clock-in and clock-out records for good. An unknown or foreign entry is answered with 400 invalid_request. Admins, operators and the company key may call it; workers get 403.

List Form Templates

Lists the company's form templates (active and archived). Workers may call it and see only templates linked to places of their teams.

List Form Submissions

Lists submitted forms, newest first. limit is applied before the templateId, jobId and placeId filters, so fewer items than limit may come back even when more match. Admins, operators and the company key only; workers get 403 permission_denied.

Get Form Submission

Returns one submitted form with its answers. An unknown or foreign id is answered with 400 invalid_request. Admins, operators and the company key only; workers get 403 permission_denied.

About OpenCode

OpenCode is an open, model-agnostic command-line coding agent. In NoClick it runs hosted and gains your apps as tools, so it can act on real systems rather than just edit files. Wire an integration into the agent and OpenCode can use that app’s operations directly while it works. It is a flexible choice when you want an open agent with broad model support and real tool access.
Open and model-agnostic
Flexible across many underlying models
Good general-purpose tool use
Lightweight to point at a focused task

Frequently asked questions

More ways to connect

Open your OpenCode agent in one click.

NoClick runs OpenCode for you with Hello Tracks wired in as tools. Connect your account and run.