Integration

jo4 integration

jo4 is a URL shortener with campaign analytics. Create, look up, list, update, bulk import and delete branded short links (custom alias, custom domain, UTM tags, expiry, password, scheduling, deep links, social preview), read click statistics, record and read conversions, run A/B tests that split traffic between destination variants, manage custom domains (add, verify, SSL), and manage webhooks and their delivery log. Referral programs, API key management, OAuth and the public click-tracking routes are not exposed. Authentication is an API key created in the jo4 app, sent in the X-Jo4-API-Key header (requests per minute per key depend on the plan).

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in jo4.Built from the 41 jo4 tools below, on the connection you add once.

What you can do with jo4

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Webhook, 5 operations

  • create_webhookCreate webhookPOSTCreates a webhook that POSTs jo4 events to an HTTPS url. events is a comma-separated string. Deliveries are signed (X-Jo4-Signature) only once you set a secret with update_webhook; the secret is never returned.
  • delete_webhookDelete webhookDELETEDeletes a webhook by its numeric id. Its endpoint stops receiving events.
  • get_webhookGet webhookGETGets one webhook by its slug. The signing secret is not returned.
  • list_webhooksList webhooksGETLists your webhooks with their url, subscribed events, enabled flag, last trigger time and failure count. The signing secret is not returned.
  • update_webhookUpdate webhookPUTUpdates a webhook by its numeric id: name, url, events, enabled, or a signing secret. Leave a field out to keep its current value. The secret is not returned.

Domain, 4 operations

  • add_domainAdd domainPOSTAdds a custom domain for your short links. Returns the DNS TXT record and CNAME target to create; then call verify_domain and provision_domain_ssl.
  • delete_domainDelete domainDELETERemoves a custom domain by its numeric id.
  • get_domainGet domainGETGets one custom domain by its numeric id: verification and SSL status and the DNS TXT and CNAME records to create.
  • list_domainsList domainsGETLists your custom domains with their verification and SSL status and the DNS records each one needs.

Url, 4 operations

  • create_short_urlCreate short urlPOSTCreates a short link for longUrl (required). Optional custom alias (shortUrl), custom domain, UTM tags, expiry, password, schedule, deep links and social preview. Returns response.fullShortUrl and response.slug.
  • delete_short_urlDelete short urlDELETEDeletes a short link by its numeric id (not its slug). The link stops redirecting.
  • get_short_urlGet short urlGETGets one short link by its slug (the 32-character id from create_short_url, not the alias). To check whether an alias exists use check_alias_availability.
  • update_short_urlUpdate short urlPUTUpdates a short link by its numeric id (not its slug). Send only the fields to change; leave the others out to keep their current value (the jo4 example sends only longUrl).

Variant, 4 operations

  • add_ab_test_variantAdd ab test variantPOSTAdds a variant to the A/B test of a short link (by slug). Returns the new variant.
  • delete_ab_test_variantDelete ab test variantDELETERemoves a variant from the A/B test of a short link.
  • list_ab_test_variantsList ab test variantsGETLists the variants of the A/B test of a short link (by slug), with each one's share of traffic, visitors, conversions and conversion rate.
  • update_ab_test_variantUpdate ab test variantPUTUpdates the name, destination or traffic share of an A/B test variant. Leave a field out to keep its current value.

Ab test, 3 operations

  • create_ab_testCreate ab testPOSTStarts an A/B test on a short link (by slug): a variant destination receives splitPercentage of the traffic, the original destination the rest. Returns the new variant.
  • end_ab_testEnd ab testDELETEEnds the A/B test of a short link (by slug).
  • get_ab_testGet ab testGETGets the A/B test of a short link (by slug): status (RUNNING, PAUSED, COMPLETED, PROMOTED), visitors, conversions and revenue per variant, the best variant and whether the result is statistically significant.

Conversion, 3 operations

  • delete_conversionDelete conversionDELETEDeletes one recorded conversion of a short link.
  • list_conversionsList conversionsGETLists the conversions recorded for a short link (by slug), page by page (page is zero-based, size defaults to 30).
  • record_conversionRecord conversionPOSTRecords a conversion (a sale, sign-up or other goal) for a short link, by slug, with an optional value, currency, quantity and attribution model. Returns the stored conversion.

Event, 2 operations

  • get_webhook_eventGet webhook eventGETGets one webhook delivery with its status, attempts, last response code, last error and the delivered payload.
  • list_webhook_eventsList webhook eventsGETLists past webhook deliveries with their status, attempt count, last response code and error, page by page (page is zero-based, size defaults to 20).

Stats, 2 operations

  • get_conversion_statsGet conversion statsGETGets conversion statistics of a short link (by slug): totals, revenue, conversion rate and breakdowns by event type, country and device, optionally between startTime and endTime (Unix ms).
  • get_short_url_statsGet short url statsGETGets click statistics of a short link (by slug): total clicks, and breakdowns by device, browser, country, city, referrer, language and UTM values, optionally between startTime and endTime (Unix ms).

Avail, 1 operation

  • check_alias_availabilityCheck alias availabilityGETChecks whether a custom alias is still free to use for a new short link. Returns response.available.

Bulk import, 1 operation

  • bulk_import_short_urlsBulk import short urlsPOSTCreates many short links in one call (counts as one request for rate limiting). Each item takes longUrl, and optionally shortUrl, title and tags (comma-separated). Returns a per-item result.

Config, 1 operation

  • get_domain_configGet domain configGETGets the CNAME target custom domains must point to and the maximum number of custom domains your account may add.

Myurl, 1 operation

  • list_short_urlsList short urlsGETLists your short links, page by page (page is zero-based, size defaults to 30). Set withStats=true to include click totals for each link in one call.

Og preview, 1 operation

  • get_og_previewGet og previewGETReads the social preview metadata of a page (Open Graph and X card title, description, image, site name).

Pause, 1 operation

  • pause_ab_testPause ab testPOSTPauses the running A/B test of a short link (by slug). Resume it with resume_ab_test.

Promote, 1 operation

  • promote_ab_test_winnerPromote ab test winnerPOSTPromotes the winning variant of the A/B test of a short link (by slug). Read get_ab_test first to see the best variant.

Provision ssl, 1 operation

  • provision_domain_sslProvision domain sslPOSTRequests an SSL certificate for a custom domain (by numeric id). Returns the domain with its sslStatus (PENDING, PROVISIONING, ACTIVE, FAILED or EXPIRED).

Refresh metadata, 1 operation

  • refresh_short_url_metadataRefresh short url metadataPOSTRe-reads the title, description and images of the destination page of a short link (by numeric id) and returns the updated link.

Resume, 1 operation

  • resume_ab_testResume ab testPOSTResumes a paused A/B test of a short link (by slug).

Retry, 1 operation

  • retry_webhook_eventRetry webhook eventPOSTSends a webhook delivery again (use it on a failed one). Returns the delivery with its new status.

Url check, 1 operation

  • check_urlCheck urlGETChecks a URL: where it finally resolves, its redirect chain, DNS records, SSL certificate, a safety status and the response time.

Verify, 1 operation

  • verify_domainVerify domainPOSTChecks the DNS records of a custom domain (by numeric id) and returns its updated verification status.

Winner, 1 operation

  • declare_ab_test_winnerDeclare ab test winnerPOSTDeclares a given variant the winner of the A/B test of a short link (by slug).

Use jo4 from Claude Code, Cursor or Codex

Connect jo4 in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its jo4 operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect jo4

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect jo4 once

    Add your jo4 connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

jo4 integration FAQ

What can you do with the jo4 integration?

LiveContext exposes 41 operations on jo4, covering webhook, domain, url and variant.

Popular integrations

Browse the whole catalog