DevelopersProduct guide

UNFORCE for AI agents: programmatic tennis video analysis

Pay-per-minute REST + MCP API for AI agents to analyze tennis videos. Prepaid credits, OpenAPI 3.1, MCP tools, EU-stored results, and an explicit US-processing boundary.

If you're building an AI agent that helps tennis players improve, a coaching bot, a club-management tool, a training-platform integration, and you need a real per-shot video analysis backend, UNFORCE is built for that. Same pipeline that powers the UNFORCE iOS + Android app (TrackNet → court keypoints → MediaPipe pose → CatBoost shot/bounce classification → stroke quality), exposed as a clean pay-per-minute API.

This page is the public-facing entry point. The OpenAPI 3.1 spec is at openapi.json; the MCP server card is at /.well-known/mcp/server-card.json.

How it works

1. Create a key in Developer UI → authenticated Firebase callable
2. Credit prepaid balance       → admin-managed balance adjustment
3. Submit a video               → POST  https://api.unforce.io/v1/jobs
4. Poll for completion          → GET   https://api.unforce.io/v1/jobs/{jobId}
5. Fetch the analysis           → GET   https://api.unforce.io/v1/jobs/{jobId}/result

Or via MCP:

POST https://api.unforce.io/mcp
Authorization: Bearer phk_...
Content-Type: application/json

{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "analyze_tennis_video",
              "arguments": { "videoUrl": "https://..." } } }

Pricing

TierPer-minute (EUR)Per-minute (USD)Per-minute (GBP)Notes
Standard€0.75$0.80£0.65Default for all agent API keys
Volume (>5,000 min/mo)€0.55$0.60£0.48Email [email protected]
EnterprisecustomcustomcustomSelf-hosted GPU optional

A 90-minute match costs about €67. A 5-minute serve drill costs €3.75.

Consumer free sessions do not create agent-API credit. API keys use the balance shown by the developer surface and GET /v1/usage; contact support before a production evaluation if the key needs credit.

Auth

Authorization: Bearer phk_<24-byte-url-safe-random>

Keys are SHA-256-hashed at rest, never logged. Rotate at any time via the admin panel or the revokeApiKey callable.

Discovery surface (well-known endpoints)

PathPurposeSpec
/openapi.jsonOpenAPI 3.1, all GET endpoints on the marketing site + the api.unforce.io schemaOpenAPI 3.1
/.well-known/api-catalogLinkset of public retrievable resourcesRFC 9727
/.well-known/mcp/server-card.jsonMCP server metadataSEP-1649
/.well-known/agent-skills/index.jsonAgent Skills RFC v0.2.0 catalogueCloudflare Agent Skills
/.well-known/openid-configurationOIDC discovery (Firebase Auth issuer)OIDC 1.0
/.well-known/x402x402 payment-required discoveryx402
/.well-known/mpp.jsonMPP machine-payment discoveryMPP
/.well-known/acp.jsonACP merchant discoveryACP v0.1

Use cases for agent operators

  • Tennis-coaching chatbots, agent uploads a user's match video, returns coaching tips. Pay per-minute, pass-through to your end-user pricing.
  • Training-platform integrations, embed UNFORCE into a course platform; auto-analyze homework videos and surface stroke-quality scores in your LMS.
  • Club-management software, analyze junior tournament matches in bulk, push reports to parents/coaches.
  • Research / dataset enrichment, annotate large collections of tennis video for labeled-data products.

What we don't do

We're not a content marketplace. UNFORCE doesn't take a cut of an agent operator's downstream revenue. The pricing above is the only thing you pay; there are no per-impression or per-end-user surcharges.

Get started

  1. Sign up at app.unforce.io (creates a Firebase user account).
  2. Generate an API key: visit admin.unforce.io → Developer → Create API Key.
  3. Ask [email protected] to credit production balance.
  4. First call: curl -H "Authorization: Bearer phk_..." https://api.unforce.io/v1/healthz.

Email [email protected] with your project description for higher rate limits or volume pricing.

Related

Frequently asked questions

Can my AI agent analyze a tennis video through UNFORCE?

Yes. UNFORCE exposes a REST API at api.unforce.io and an MCP server at api.unforce.io/mcp. Both accept Bearer API keys (phk_…) and bill against prepaid credits. Submit a job, poll for status, fetch the analysis JSON when done, same shape as the in-app workflow but agent-callable.

How much does it cost per video?

The default agent-API price is €0.75 per started minute of video, billed against prepaid API-key credit. A 90-minute match is about €67.50 at that rate. The live /v1/pricing response is authoritative for price and plan limits. Consumer free sessions are separate from API credit.

What protocols do you support for agent payments?

Prepaid API-key balances, plus machine-payment discovery files for agents to understand pricing and endpoints. See /.well-known/api-catalog for the full discovery chain.

Is this an MCP server I can plug into Claude / ChatGPT?

Yes. The MCP server at api.unforce.io/mcp uses Streamable HTTP transport and exposes tools, analyze_tennis_video, get_job_status, get_analysis_result, get_pricing, list_my_jobs, plus markdown resources (pricing, accuracy, how-it-works, faq). Bearer auth via the same API key as the REST endpoint.

Where is video data hosted? GDPR-compliant?

Uploaded video and returned results are stored in europe-west1 (Belgium). The self-hosted Lambda Cloud GPU pool currently processes video in US regions, and a parallel Gemini analysis uses Vertex AI's global endpoint. Agent operators remain responsible for their own lawful basis and processor terms; the privacy policy is the canonical transfer disclosure.

What's the rate limit for an API key?

Current plan defaults are Free 10 requests/min and 100 jobs/day, Pro 60/min and 5,000/day, and Team 300/min and 50,000/day. The live key and response rate-limit headers are authoritative.

View OpenAPI spec

One honest fix, with the clips that prove it.