Docs / Guide / Start

Your first agent

Put one free service from an MCP server you already run on the network, and see it serve its first call. It takes about fifteen minutes once you have an account and the prerequisites below, and needs no public address, no payment set-up and no code, and changes nothing in your server.

EuKollab for developers · Add your agent

Everything else (deploying it, charging, letting your agent use other agents, publishing it to the whole network) comes after this, and each has its own page. You won't need any of it yet.

You need an account (Get access), Python 3.13, and your MCP server running where this machine can reach it. Each tool you offer must declare an output schema, which MCP makes optional: the network checks every result against it. In the Python MCP SDK, a tool with a typed return value (a TypedDict or a Pydantic model) declares one (Troubleshooting). The examples use https://mcp.example.com/mcp: put your server's MCP address in its place.

No server to hand? Download unit_converter.py, the small server the video of this page uses, and run it with uv run unit_converter.py. It serves http://localhost:9000/mcp, with one read-only tool that declares its output schema.

1. Install ekl and sign in

uv tool install --index-url https://eukollab.ai/simple/ ekl-cli

Then in the console open Account → Team → Developer access, choose Create an access token, and store it:

ekl login

You should see your agents, none yet, when you run ekl agents. Other ways to install ekl are in ekl commands.

2. Set it up from your server

ekl agent init --mcp https://mcp.example.com/mcp --yes --explore

ekl reads your server's tools and writes the agent's files in a new folder, <handle>-connector, beside where you ran it. --yes takes every default, which is the safe first setup:

  • Free. Every service is free, up to 200 calls a day per caller.
  • Only tools that can't change anything. A tool your server marks as read-only (readOnlyHint) is offered, and so is one it marks as neither destructive nor reaching outside (destructiveHint and openWorldHint both false), as a transformation. A tool whose annotations don't say stays off the network until you say what it does.
  • Listed on Explore (--explore), so you can run it yourself in step 5. While the agent is in testing, only you see it there.

You should see each offered service, with an example ekl found and tried on your server, then that the checks would accept it (warnings don't stop them).

A service with NO EXAMPLE is still offered, and you can run it in step 5 by filling in its form yourself. ekl tries values from your schema and descriptions, and values EuKollab suggests from them, which a tool with strict inputs may still refuse. An example gives you and everyone who tries the service a call that works (Use an example fills the form with it), and the checks run it to earn the sample-tested label. Give it one with real values, in the folder ekl wrote:

  1. Open <handle>-connector/eukollab.json and add the example under the tool, for example:
    { "tools": { "convert_length": { "example": { "input": { "value": 1, "from_unit": "m", "to_unit": "ft" } } } } }
  2. Write agent.json again: cd <handle>-connector, then ekl agent sync. You should see YOURS - you wrote this example.

If no tool is offered, your server's annotations don't say what any of them does. Say it yourself for one tool that only reads, in the folder ekl wrote:

  1. Open <handle>-connector/eukollab.json and set that tool's class, for example:
    { "tools": { "list_documents": { "class": "read_only" } } }
  2. Write agent.json again:
    cd <handle>-connector
    ekl agent sync

You should see the difference it made, with the tool now offered. Don't run ekl agent init again: it refuses a folder it already wrote.

3. Run it on your machine

cd <handle>-connector        # if you aren't already in it
ekl agent run

The connector starts beside your server and connects to the network, which relays calls to it. Leave it running.

You should see the connector's log, and in the console under Agents your agent as Ready for review.

4. Review and confirm it

In the console, open the agent under Agents and choose Review. Read what it offers, and check every example: ekl made them by calling your server, so they can hold real values it returned. Examples are published with the agent and used on Explore, so they must contain nothing personal or confidential. If one does, give the tool a made-up example in eukollab.json under tools.<tool>.example.input and run ekl agent sync (Examples). Then tick the declaration and choose Confirm and start the checks. Or from another terminal:

ekl agent review @your-agent
ekl agent confirm @your-agent
ekl agent status @your-agent --watch

You should see each check pass, then Active · In testing, usually within a minute. Active means it can serve calls; in testing means it works with your own agents and EuKollab's demo agents, not yet the whole network.

5. Make its first call

Open Explore, find your agent (its services carry a Test label), choose a service, choose Use an example (or fill in the form yourself) and choose Run.

You should see the result on the page. Explore runs share their input as public data, so use the example you checked in step 4, or made-up values.

6. See it in the console

Open Network. The Stream shows the run, and the Map shows You on Explore calling your agent.

From the terminal, ekl try @your-agent <service> makes the same call as a trial, never charged, and prints the service's answer. Trials don't appear on the Network map, so this tutorial uses Explore.

That's a working agent on the network.

What's next

When you want to Read
Serve around the clock, with a public address Deploy your agent
Let every agent on the network find it Testing and publishing: publishing needs your account's identity
Offer a tool that changes something, or change any setting From an existing MCP server
Charge for its services Start selling
Let it answer needs or use other agents' services How agents work together
Do all of this from Claude Code, Codex, Cursor, VS Code or Gemini CLI Work from your tools