# Send Talkspresso to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "talkspresso",
    "name": "Talkspresso",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/baron-talkspresso/talkspresso",
    "canonicalUrl": "https://clawhub.ai/baron-talkspresso/talkspresso",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/talkspresso",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=talkspresso",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "references/api.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "talkspresso",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T10:02:13.132Z",
      "expiresAt": "2026-05-08T10:02:13.132Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=talkspresso",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=talkspresso",
        "contentDisposition": "attachment; filename=\"talkspresso-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "talkspresso"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/talkspresso"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/talkspresso",
    "downloadUrl": "https://openagent3.xyz/downloads/talkspresso",
    "agentUrl": "https://openagent3.xyz/skills/talkspresso/agent",
    "manifestUrl": "https://openagent3.xyz/skills/talkspresso/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/talkspresso/agent.md"
  }
}
```
## Documentation

### Talkspresso

Manage a Talkspresso business via the REST API using curl and jq.

### Setup

The user needs a TALKSPRESSO_API_KEY. If missing:

Direct them to https://app.talkspresso.com/settings/api-keys to generate one
If they don't have a Talkspresso account, direct them to https://talkspresso.com/signup
Set it: export TALKSPRESSO_API_KEY="tsp_..."

If the user is new to Talkspresso, help them set up: profile, timezone, availability, first service.

### API Pattern

All calls follow this pattern:

# GET
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/ENDPOINT" | jq .data

# POST
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"key":"value"}' \\
  "https://api.talkspresso.com/ENDPOINT" | jq .data

# PUT
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"key":"value"}' \\
  "https://api.talkspresso.com/ENDPOINT" | jq .data

# DELETE
curl -s -X DELETE -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/ENDPOINT" | jq .data

Use jq .data on every response. The API wraps all responses in { "data": ... }.

### Profile

# Get profile
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/profile/me" | jq .data

# Update profile
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"expert_title":"Executive Coach","about":"Short bio","bio":"Full bio","categories":["coaching"]}' \\
  "https://api.talkspresso.com/profile" | jq .data

Key fields: expert_title, about, bio, categories (array), handle (URL slug), profile_photo.

### Services (Video Calls, Workshops)

# List services
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/service/me" | jq .data

# Create service
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "title":"Strategy Call",
    "short_description":"1-on-1 strategy session",
    "long_description":"",
    "price":100,
    "duration":30,
    "logistics":{"session_type":"single","capacity_type":"single","capacity":1}
  }' \\
  "https://api.talkspresso.com/service" | jq .data

# Update service
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"title":"New Title","price":150}' \\
  "https://api.talkspresso.com/service/SERVICE_ID" | jq .data

# Delete service
curl -s -X DELETE -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/service/SERVICE_ID" | jq .data

Service types (via logistics):

1:1 call: {"capacity_type":"single","capacity":1}
Group session: {"capacity_type":"group","capacity":10}
Webinar: {"capacity_type":"group","capacity":50,"is_webinar":true}

### Products (Digital Downloads)

# List products
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/product/me" | jq .data

# Create product
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "title":"Leadership Guide",
    "slug":"leadership-guide",
    "short_description":"Comprehensive guide for emerging leaders",
    "long_description":"Full description here...",
    "price":29,
    "product_type":"download",
    "status":"active"
  }' \\
  "https://api.talkspresso.com/product" | jq .data

# AI-generate product details from description
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"description":"A guide about leadership for new managers","productType":"download"}' \\
  "https://api.talkspresso.com/product/generate-details" | jq .data

# Update product
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"price":39,"status":"active"}' \\
  "https://api.talkspresso.com/product/PRODUCT_ID" | jq .data

# Delete product
curl -s -X DELETE -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/product/PRODUCT_ID" | jq .data

# Product analytics
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/product/analytics" | jq .data

# List purchases
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/product/purchases" | jq .data

Product types: download, video, bundle. Status: draft, active, archived.

### Appointments & Scheduling

# List appointments (upcoming by default)
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/appointments/me?status=upcoming" | jq .data

# Get specific appointment
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/appointments/APT_ID" | jq .data

# Check available time slots
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"date":"2026-02-20","interval":30,"provider_id":"PROVIDER_ID"}' \\
  "https://api.talkspresso.com/appointments/slots" | jq .data

# Create appointment (does NOT send email)
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "client_name":"Jane Smith",
    "client_email":"jane@example.com",
    "service_id":"SERVICE_ID",
    "scheduled_date":"2026-02-20",
    "scheduled_time":"10:00",
    "is_complimentary":true,
    "skip_email":true
  }' \\
  "https://api.talkspresso.com/appointments/invite" | jq .data

# Send the invitation email (after reviewing)
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{}' \\
  "https://api.talkspresso.com/appointments/APT_ID/resend-invite" | jq .data

# Approve pending booking
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/appointments/APT_ID/approve" | jq .data

# Cancel appointment
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/appointments/APT_ID/cancel" | jq .data

Important: Always create appointments with skip_email: true first. Show the user the details. Only send the invitation email after they confirm.

### Clients

# List clients (optional search)
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/client/my?search=jane" | jq .data

# Get client details + booking history
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/client/CLIENT_ID/appointments" | jq .data

# Get session history (summaries, action items)
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/client/CLIENT_ID/session-history" | jq .data

### Earnings

# Get transactions
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/transaction/my?limit=50" | jq .data

### Calendar & Availability

# Get calendar settings (timezone, availability windows)
curl -s -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  "https://api.talkspresso.com/calendar/me" | jq .data

# Update timezone
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"timezone":"America/New_York"}' \\
  "https://api.talkspresso.com/calendar" | jq .data

# Update availability windows
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"availability":{"Monday":{"is_selected":true,"start_time":"09:00","end_time":"17:00"}}}' \\
  "https://api.talkspresso.com/calendar" | jq .data

### File Uploads

# Upload image
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -F "file=@/path/to/image.jpg" \\
  "https://api.talkspresso.com/file/upload/image" | jq .data

# Upload video
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -F "file=@/path/to/video.mp4" \\
  "https://api.talkspresso.com/file/upload/video" | jq .data

# Upload file (PDF, doc, etc)
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -F "file=@/path/to/document.pdf" \\
  "https://api.talkspresso.com/file/upload/file" | jq .data

# Set profile photo (upload, then update profile)
CDN_URL=$(curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -F "file=@/path/to/photo.jpg" \\
  "https://api.talkspresso.com/file/upload/image" | jq -r .data)
curl -s -X PUT -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d "{\\"profile_photo\\":\\"$CDN_URL\\"}" \\
  "https://api.talkspresso.com/profile" | jq .data

# Attach file to product
curl -s -X POST -H "Authorization: Bearer $TALKSPRESSO_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"file_type":"pdf","file_name":"Guide.pdf","file_url":"CDN_URL","file_size":12345}' \\
  "https://api.talkspresso.com/product/PRODUCT_ID/files" | jq .data

File types for products: pdf, video, audio, image, zip, presentation, other.

### Booking Link

The public booking page URL is: https://talkspresso.com/HANDLE

A specific service: https://talkspresso.com/HANDLE/SERVICE_SLUG

Get the handle from the profile (handle field).

### New User Setup

Get profile to see current state
Update profile: expert_title, about, bio
Set timezone in calendar
Set availability windows
Create first service (start with a free 15-min intro call)
Share booking link: https://talkspresso.com/HANDLE

### Create a Product from Scratch

Ask what the product is about
Use AI to generate details: POST /product/generate-details
Create the product with generated details
If the user has a file, upload it and attach to the product
Share the product link

### Schedule a Session

Search for the client: GET /client/my?search=name
List services to pick the right one
Check availability for the date
Create appointment with skip_email: true
Show details to user for confirmation
Only then send the invite email

### Revenue Check

Get transactions: GET /transaction/my
Calculate this month's total from payment transactions
Show upcoming appointments count
Show booking link for sharing

### Rules

Never send invites without confirmation. Always create with skip_email: true, show the user, then send.
Stripe required for paid sessions. If the user hasn't connected Stripe, they can only create free services and free products.
Get provider_id from the profile (id field) when needed for availability checks.
Slugs are auto-generated from titles if not provided. Lowercase, hyphens, no special chars.
Timezone comes from calendar settings, not the user model. Always check GET /calendar/me.

### Additional Endpoints

For full API reference including notifications, testimonials, recordings, promo codes, file library, messaging, Google Calendar sync, and organization features, see references/api.md.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: baron-talkspresso
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-01T10:02:13.132Z
- Expires at: 2026-05-08T10:02:13.132Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/talkspresso)
- [Send to Agent page](https://openagent3.xyz/skills/talkspresso/agent)
- [JSON manifest](https://openagent3.xyz/skills/talkspresso/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/talkspresso/agent.md)
- [Download page](https://openagent3.xyz/downloads/talkspresso)