Developer API

Build with LinxTime

Integrate commitment-based scheduling into your app. Create polls, signups, and bookings via API — with quorum logic built in.

Agent-Ready

Built for AI agents. MCP server, CLI daemon, and skill files for autonomous scheduling.

Realtime Events

SSE-powered live updates. Know instantly when RSVPs, votes, or confirmations happen.

Simple Integration

RESTful API with clear endpoints. Create a link in one call, share it, and let LinxTime handle the rest.

Quick Start

Getting Started

Go from zero to your first LinxTime integration in minutes.

Installation

npm

Recommended

Install via npm (recommended)

npm install -g @linxtime/cli

Homebrew

Install on macOS via Homebrew

brew install linxtime/tap/linxtime

Basic Workflow

1

Install CLI

Install the LinxTime CLI using npm or Homebrew

npm install -g @linxtime/cli
2

Authenticate

Request access and follow the approval flow

linxtime auth login
# Opens browser for approval
3

Start Daemon

Start the background daemon for real-time events

linxtime daemon start
4

First Action

Create your first POLL and invite participants

linxtime links create "Team Lunch"
linxtime links invite <link-id> [email protected]

Next Steps

Dive deeper into the platform:

Architecture

Core Concepts

Understand how LinxTime models scheduling, voting, and event confirmation.

Core Models

Links & Options

Core Model

Links are scheduling proposals. Options represent choices for date, location, budget, or activity.

Votable Aspects

Flexibility

DATE_TIME, LOCATION, BUDGET, ACTIVITY, RECURRENCE_PATTERN, and SESSION are all supported voting dimensions.

RSVP vs Options: The Two-System Model

RSVP System

Attendance Commitment

  • Drives quorum toward confirmation
  • YES/MAYBE/NO responses
  • “I am coming to this event”

Options System

Preference Voting

  • Helps the group find optimal choices
  • Vote for preferred date, time, location, or budget
  • “I prefer these options”

Event Types

Poll Links

POLL

Group voting on multiple options. Best for team dinners, meetings, or social events.

Common use cases:

  • Team lunches
  • Meeting scheduling
  • Social events

Signup Links

SIGNUP

Capacity-limited signups for workshops, classes, or limited-attendance events.

Common use cases:

  • Workshops
  • Training sessions
  • Limited events

Booking Links

BOOKING

One-on-one booking pages similar to Calendly for individual time-slot reservations.

Common use cases:

  • 1-on-1 meetings
  • Consultations
  • Interviews

Event Lifecycle

1

Link Created

PENDING

Participants are invited and voting begins.

2

Participants Join

ACTIVE

RSVP responses and option votes are collected.

3

Quorum Reached

QUORUM_MET

Enough YES RSVPs to proceed (for confirmMode: IMMEDIATE).

4

Event Confirmed

CONFIRMED

The winning option is locked and a ConfirmedEvent is created.

API Reference

Action Reference

Browse 21 supported actions via POST /v1/agent/act

Categories

developers.actionReference.actionsTitle

rsvp

links:vote

Submit an attendance RSVP for a link. Drives quorum toward confirmation.

POST /v1/agent/act
{
  "action": "rsvp",
  "linkId": "clx123abc",
  "response": "YES",
  "comment": "Looking forward to it!"
}

Need more details?

Explore related sections for event payloads, auth scopes, and quotas.

Real-time Events

SSE Event Stream

Stay synchronized with real-time events via Server-Sent Events. Perfect for keeping agents updated.

Connection

Endpoint

GET /v1/agent/stream

Authentication

Authorization: Bearer lt_agent_...

Query Parameters

subscribeComma-separated list of events to receive (optional)
payloadcompact or full - event detail level
lastEventIdResume from specific event ID (reconnection)

Event Types

link.invited

User invited to a link - triggers when negotiate.start or link.invite is called

Event Payload
{"event":"link.invited","linkId":"clx123abc"}

option.added

New option suggested - triggers when option.suggest or negotiate.propose is called

Event Payload
{"event":"option.added","linkId":"clx123abc"}

rsvp.submitted

RSVP submitted with quorum counts - triggers when RSVP is submitted

Event Payload
{"event":"rsvp.submitted","linkId":"clx123abc"}

link.status_changed

Link status transitions - QUORUM_MET, CONFIRMED, FAILED, etc.

Event Payload
{"event":"link.status_changed","linkId":"clx123abc"}

Integration Examples

Browser/Frontend Integration
const eventSource = new EventSource("/api/v1/agent/stream");

Best Practices

  • Subscribe only to events your agent needs to minimize bandwidth
  • Implement automatic reconnection with exponential backoff
  • Use lastEventId to resume from the last received event
  • Handle connection errors gracefully and fall back to polling if needed
  • Use payload=compact for high-frequency monitoring
MCP Integration

MCP Server

Connect LinxTime to Claude Desktop, OpenClaw, and other MCP-compatible AI systems.

Setup Options

Local MCP Server

Run LinxTime MCP server locally with full authentication and features.

Recommended
Full Features

Remote MCP Server

Connect to our hosted MCP server at mcp.linxtime.com for quick setup.

Quick Setup
Read-Only

Configuration

Local MCP Server Setup
# Install LinxTime CLI
npm install -g @linxtime/cli
linxtime auth login
linxtime mcp serve

Available MCP Tools

linxtime_links_list

List user's scheduling links

linxtime_link_details

Get full link details and participants

linxtime_negotiate_start

Start multi-agent negotiation

linxtime_negotiate_propose

Propose new scheduling options

linxtime_negotiate_status

Check negotiation status

linxtime_rsvp

Submit RSVP responses

linxtime_vote_options

Vote on scheduling preferences

linxtime_suggest_option

Suggest new options

linxtime_calendar_availability

Query calendar free/busy

Ready to integrate?

Get started with MCP tools or explore other integration options.

Authentication

Agent Authentication

Secure, scoped access tokens for AI agents. Request only the permissions you need.

Getting Started

1. Request Access

Run authentication flow and select scopes

2. User Approval

User reviews and approves agent access

3. Token Issued

Agent receives scoped access token

CLI Authentication

Authentication Flow
# Request agent access
linxtime auth login

# Opens browser for approval flow:
# 1. Select which scopes to grant
# 2. Approve access for your agent
# 3. CLI automatically receives and stores token

# Verify authentication
linxtime auth status
# ✓ Authenticated as: [email protected]
# ✓ Scopes: links:read, links:vote, links:suggest
# ✓ Expires: 2026-06-15T10:30:00Z

Scopes Reference

links:read

Read link details, participants, options

links:vote

Vote on options, RSVP, register for signups

links:suggest

Suggest new options

links:create

Create new links/events

links:manage

Invite participants, manage settings

integrations:manage

Connect/disconnect calendar providers

calendar:read

Query calendar availability

notifications:read

Read and acknowledge notifications

Using Tokens

Bearer Token Authentication
# Using the token in API calls
curl -H "Authorization: Bearer lt_agent_abc123..." \
     -H "Content-Type: application/json" \
     -d '{"action": "rsvp", "linkId": "clx123", "response": "YES"}' \
     https://api.linxtime.com/v1/agent/act

Multi-Profile Support

Multiple Accounts

Manage multiple LinxTime accounts or different permission sets with named profiles.

# Create named profiles for different contexts
linxtime auth login --profile work
linxtime auth login --profile personal

# Switch between profiles
linxtime links list --profile work
linxtime negotiate start --profile personal --title "Weekend Trip" --with [email protected]

# List profiles
linxtime auth profiles
# work (default)
# personal

Security Best Practices

Token Security

  • • Request only the scopes your agent actually needs
  • • Store tokens securely - never commit them to version control
  • • Monitor token expiration and refresh automatically
  • • Revoke unused tokens via LinxTime settings
  • • Use separate tokens for different environments (dev/prod)
Agent Behavior

Autonomy Levels

Control how much independence your agent has. Each action can specify an autonomy level to balance speed with human oversight.

Auto

auto

Full autonomy

The agent acts immediately without human approval. Best for routine actions like voting on preferred options or acknowledging notifications.

Example scenarios:

  • option.vote

    Agent votes for the time slot that fits the user's calendar

  • notification.ack

    Agent acknowledges informational notifications automatically

  • rsvp

    Agent RSVPs YES to a recurring team standup

{
  "action": "option.vote",
  "linkId": "clx123abc",
  "voteOptionIds": ["opt_friday"],
  "autonomy": "auto"
}

Suggest

suggest

Propose then confirm

The agent proposes an action and waits for the user to approve before executing. Ideal for actions with side effects like creating events or inviting participants.

Example scenarios:

  • link.create

    Agent suggests creating a team dinner poll before sending invites

  • link.invite

    Agent proposes inviting specific colleagues and waits for confirmation

  • booking.reserve_for

    Agent suggests booking a slot on behalf of a guest

{
  "action": "link.create",
  "destination": "Team Dinner",
  "eventType": "POLL",
  "autonomy": "suggest"
}
// Agent shows proposal to user first
// Executes only after user confirms

Notify

notify

Inform only

The agent informs the user about relevant events but takes no action. Suitable for monitoring event changes, new invitations, or quorum updates.

Example scenarios:

  • SSE stream

    Agent notifies user when an event reaches quorum

  • link.invited

    Agent alerts user about a new event invitation for review

  • rsvp.submitted

    Agent reports that a participant changed their RSVP

// No action request — agent monitors SSE stream
// and surfaces relevant events to the user

// Example SSE event received:
{
  "type": "rsvp.submitted",
  "linkId": "clx123abc",
  "data": { "rsvp": "YES", "quorumMet": true }
}
// Agent: "Quorum reached for Team Dinner!"

Best Practice

Start with suggest for all actions, then selectively promote low-risk actions to auto as users build trust in the agent's behavior. Use notify for monitoring-only integrations where no action is needed.

Limits

Rate Limits

Rate limits protect the platform and ensure fair usage. All limits are applied per authentication token.

Endpoint / ActionLimitWindowNotes
POST /v1/agent/act60 requestsper minutePer-token. Covers all actions.
GET /v1/agent/read/*120 requestsper minuteRead operations are more generous.
GET /v1/agent/stream5 connectionsconcurrentSSE connections per token. Reconnects count.
link.create10 requestsper hourLink creation is separately rate-limited.
link.invite30 requestsper hourInvitation emails are throttled.
negotiate.start5 requestsper hourMulti-agent negotiation sessions.

Response Headers

Every API response includes rate limit headers so your agent can self-throttle:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1711036800

Handling 429 Too Many Requests

When rate limited, the response includes a Retry-After header with the number of seconds to wait. Implement exponential backoff with jitter for production agents. The SSE stream will send a rate_limited event if the connection is throttled.

Integration

Code Examples

Get started quickly with examples for popular AI frameworks and direct API usage.

Frameworks

Claude Desktop

Connect LinxTime MCP server to Claude Desktop for natural language scheduling.

// ~/.claude/claude_desktop_config.json
{
  "mcpServers": {
    "linxtime": {
      "command": "npx",
      "args": ["-y", "@linxtime/mcp"],
      "env": {
        "LINXTIME_API_TOKEN": "lt_agent_xxx_yyy"
      }
    }
  }
}

// Then in Claude Desktop:
// "Schedule a team lunch poll for next week,
//  invite [email protected] and [email protected]"