Installable skillMIT

Jo4 - URL Shortener & Analytics API

An MCP server that provides on-demand skill loading for AI coding assistants.

BY modbenderUPDATED Oct 27, 2026
INTENDED FOR◈OpenClawInstall in a listed agent.

instructions.md

---
name: jo4
description: URL shortener, QR code generator, and link analytics API. Create short links, generate QR codes, and track click analytics.
homepage: https://jo4.io
user-invocable: true
metadata: { "openclaw": { "emoji": "🔗", "primaryEnv": "JO4_API_KEY", "requires": { "env": ["JO4_API_KEY"] } } }
---

# Jo4 - URL Shortener & Analytics API

Jo4 is a modern URL shortening service with QR code generation and detailed link analytics.

## Authentication

All protected endpoints require an API key. Set your API key as an environment variable:

```bash
export JO4_API_KEY="your-api-key"
```

Get your API key from: https://jo4.io/api-keys

## API Base URL

```
https://jo4-api.jo4.io/api/v1
```

## Endpoints

### Create Short URL (Authenticated)

```bash
curl -X POST "https://jo4-api.jo4.io/api/v1/protected/url" \
  -H "X-API-Key: $JO4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "longUrl": "https://example.com/very-long-url",
    "title": "My Link"
  }'
```

**Request Body:**
- `longUrl` (required) - The destination URL (max 2048 chars)
- `title` (optional) - Link title (max 200 chars)
- `description` (optional) - Link description (max 500 chars)
- `shortUrl` (optional) - Custom alias (max 16 chars, alphanumeric/hyphen/underscore)
- `expirationTime` (optional) - Unix timestamp for link expiration
- `passwordProtected` (optional) - Boolean to enable password protection
- `password` (optional) - Password if protected (4-128 chars)

**UTM Parameters:**
- `utmSource`, `utmMedium`, `utmCampaign`, `utmTerm`, `utmContent`

**Response:**
```json
{
  "response": {
    "id": 123,
    "slug": "abc123",
    "shortUrl": "abc123",
    "fullShortUrl": "https://jo4.io/a/abc123",
    "longUrl": "https://example.com/very-long-url",
    "title": "My Link",
    "qrCodeUrl": "https://jo4.io/qr/abc123"
  }
}
```

### Create Anonymous Short URL (No Auth Required)

```bash
curl -X POST "https://jo4-api.jo4.io/api/v1/public/url" \
  -H "Content-Type: application/json" \
  -d '{"longUrl": "https://example.com"}'
```

Limited features, no analytics access.

### Get URL Details

```bash
curl -X GET "https://jo4-api.jo4.io/api/v1/protected/url/{slug}" \
  -H "X-API-Key: $JO4_API_KEY"
```

### Get URL Analytics

```bash
curl -X GET "https://jo4-api.jo4.io/api/v1/protected/url/{slug}/stats" \
  -H "X-API-Key: $JO4_API_KEY"
```

**Response includes:**
- Total clicks
- Clicks by date
- Geographic distribution
- Device/browser breakdown
- Referrer sources

### List My URLs

```bash
curl -X GET "https://jo4-api.jo4.io/api/v1/protected/url/myurls?page=0&size=20" \
  -H "X-API-Key: $JO4_API_KEY"
```

### Update URL

```bash
curl -X PUT "https://jo4-api.jo4.io/api/v1/protected/url/{id}" \
  -H "X-API-Key: $JO4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Updated Title",
    "longUrl": "https://new-destination.com"
  }'
```

### Delete URL

```bash
curl -X DELETE "https://jo4-api.jo4.io/api/v1/protected/url/{id}" \
  -H "X-API-Key: $JO4_API_KEY"
```

## QR Codes

Every short URL automatically gets a QR code at:
```
https://jo4.io/qr/{shortUrl}
```

## Rate Limits

Rate limits vary by plan:
- Free: 60 requests/minute
- Pro: Up to 10,000 requests/minute
- Anonymous (public endpoints): 10 requests/minute

## API Documentation

Full OpenAPI/Swagger documentation: https://jo4-api.jo4.io/swagger-ui/index.html

## Common Use Cases

### 1. Shorten a URL for sharing
```bash
curl -X POST "https://jo4-api.jo4.io/api/v1/protected/url" \
  -H "X-API-Key: $JO4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"longUrl": "https://example.com/article", "title": "Article"}'
```

### 2. Create campaign tracking link
```bash
curl -X POST "https://jo4-api.jo4.io/api/v1/protected/url" \
  -H "X-API-Key: $JO4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "longUrl": "https://mysite.com/landing",
    "title": "Q1 Campaign",
    "utmSource": "twitter",
    "utmMedium": "social",
    "utmCampaign": "q1-2026"
  }'
```

### 3. Create expiring link
```bash
curl -X POST "https://jo4-api.jo4.io/api/v1/protected/url" \
  -H "X-API-Key: $JO4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "longUrl": "https://mysite.com/promo",
    "title": "Limited Offer",
    "expirationTime": 1738454400
  }'
```

## Error Codes

| Code | Meaning |
|------|---------|
| 400 | Bad request - invalid parameters |
| 401 | Unauthorized - missing or invalid API key |
| 403 | Forbidden - insufficient permissions |
| 404 | Not found - URL doesn't exist |
| 429 | Rate limit exceeded |
COMPATIBILITY & REFERENCES

Platform guidance

Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.