AGENT STUDIO · PLAYOUT LOG · MCP

Agent runs,
on air.

Tally is a small studio for AI agents. Compose one from skills and live tools, run it on Claude or any OpenAI-compatible model with your own key, and follow every turn, tool call and approval in a control-room playout log.

No sign-up. Samples play without a key.

01

Compose

Agents are a role, a set of skills (small instruction packs like “cite sources” or “verify numbers”) and the live tools they may call. Start from a template or build one in a minute.

02

Run on any model

Claude (Opus 5, Sonnet 5, Haiku 4.5) with adaptive thinking and refusal fallback, or any OpenAI-compatible API: OpenAI, Gemini, OpenRouter, Groq, DeepSeek. Bring your own key; it never touches a database.

03

Observe & govern

A broadcast-style playout log shows every turn and tool call with timecode, latency, tokens and cost. Gate risky tools behind human approval, cap turns and budget, export OpenTelemetry traces.

The loop lives in your browser.

The server is stateless: it runs one model turn or one tool per request. The browser drives the loop, so it can pause for a human, stop on a budget and record a complete trace — then share it as a link that carries the whole run, with no database behind it.

  • Human-in-the-loop gates. Mark any tool as “needs approval”. Tools with side effects, like the webhook, always ask.
  • OpenTelemetry out. Export any run as OTLP JSON using the GenAI semantic conventions and load it into your tracing backend.
  1. 01Browser

    Owns the agent loop: approvals, limits, stop button, the trace.

  2. 02/api/step

    One model turn per request, streamed back as NDJSON. Keys pass through, never stored.

  3. 03/api/tools/run

    Runs one tool: validated input, SSRF-guarded fetches, timeouts, rate limits.

  4. 04/api/mcp

    The same toolset as a stateless remote MCP server for Claude, Cursor & co.

Live tools, no extra keys.

Every tool talks to a public API, validates its input with a schema and runs server-side behind timeouts, size caps and a private-network guard.

Fetch URLweb_fetch

Download a public web page or JSON document and return its readable text.

any public URL

Wikipediawikipedia_search

Search Wikipedia (any language) and return the best matching articles with their intro.

wikipedia.org

Hacker Newshacker_news

Read the current top, best, new, Show HN or Ask HN stories with score and comment count.

news.ycombinator.com

GitHub searchgithub_search

Search public GitHub repositories by keyword, topic or language, sorted by stars or recent activity.

api.github.com

GitHub repogithub_repo

Get stars, activity, topics, license and latest release of a public GitHub repository.

api.github.com

Weatherweather_forecast

Current conditions and a daily forecast (rain, wind gusts, sunrise/sunset) for any place.

open-meteo.com

FX ratescurrency_convert

Convert an amount between currencies with today's reference rate (includes ARS).

open.er-api.com

Clockget_time

Current date and time in any IANA time zone.

server clock

Calculatorcalculator

Evaluate an arithmetic expression exactly instead of doing math in your head.

local

Webhooksend_webhookAPPROVAL

POST a JSON payload to a webhook (n8n, Make, Zapier, Slack…). Has side effects.

your endpoint

REMOTE MCP SERVER

Plug the same tools into your own agent.

/api/mcp speaks the Model Context Protocol over Streamable HTTP. It is stateless and read-only (the webhook tool is studio-only), so Claude Code, Claude Desktop, Cursor or any MCP client can use the research and data tools directly.

CLAUDE CODE
claude mcp add --transport http tally https://tally-agents.vercel.app/api/mcp
MCP CLIENT CONFIG (JSON)
{
  "mcpServers": {
    "tally": {
      "type": "http",
      "url": "https://tally-agents.vercel.app/api/mcp"
    }
  }
}