CONNECT APP
Build with Jibble
100% FREE time tracking software
Productivity
- OAuth
MCP
Give your agent Jibble tools
Every Jibble action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Jibble account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "jibble",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Clock In:
const result = await mcp.callTool({
name: "jibble-clock-in",
arguments: {
personId: "Person ID",
activityId: "Activity ID",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "jibble",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Clock In:
result = await session.call_tool("jibble-clock-in", {
"personId": "Person ID",
"activityId": "Activity ID",
})API PROXY
Call the Jibble API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Jibble API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://workspace.prod.jibble.io/v1/People",
})
// Any allowed Jibble endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://workspace.prod.jibble.io/v1/People
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly93b3Jrc3BhY2UucHJvZC5qaWJibGUuaW8vdjEvUGVvcGxl?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Jibble actions from your backend
Connect a user's Jibble account once, then run Clock In on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "jibble-clock-in",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
jibble: { authProvisionId: "apn_xxxxxxx" },
personId: "Person ID",
activityId: "Activity ID",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="jibble-clock-in",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"jibble": {"authProvisionId": "apn_xxxxxxx"},
"personId": "Person ID",
"activityId": "Activity ID",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "jibble-clock-in",
"configured_props": {
"jibble": { "authProvisionId": "apn_xxxxxxx" },
"personId": "Person ID",
"activityId": "Activity ID"
}
}'TOOLS
Jibble actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Clock In
actionCreate a new clock in time entry See the documentation.Writev0.0.2 -
Clock Out
actionCreate a new clock out time entry See the documentation.Writev0.0.2 -
Create Time Tracking Report
actionThis is generic endpoint for getting time tracking reports. See the documentation.Read-onlyv0.0.2 -
Create Timesheets Daily Summary
actionGets daily timsheets summary for given date range and given persons. May omit personIds parameters in query so it will return data for all member of the organization. See the documentation.Read-onlyv0.0.3 -
List Activity ID Options
actionRetrieves available options for the Activity ID field.Read-onlyv0.0.1 -
List Client Id Options
actionRetrieves available options for the Client Id field.Read-onlyv0.0.1 -
List Group ID Options
actionRetrieves available options for the Group ID field.Read-onlyv0.0.1 -
List Location ID Options
actionRetrieves available options for the Location ID field.Read-onlyv0.0.1 -
List Person ID Options
actionRetrieves available options for the Person ID field.Read-onlyv0.0.1 -
List Project ID Options
actionRetrieves available options for the Project ID field.Read-onlyv0.0.1 -
List Schedule ID Options
actionRetrieves available options for the Schedule ID field.Read-onlyv0.0.1
No Jibble triggers are available yet.
- App slug
- jibble
- Authentication
- OAuth
- Categories
- Productivity
- Actions
- 11
- Triggers
- 0
- API proxy
- Available