Installing the skill
You need a Search2o account with published agents, an agent server the person's machine can reach, and an integration token for each person who will use the skill. The skill is published at github.com/Search2o/search2o-skill, and the same folder works in every client that implements the Agent Skills standard.
The folder
search2o/
SKILL.md the instructions, and the description that triggers the skill
reference.md request and response shapes, result codes, output types
scripts/s2o.py the two calls, search and execAgentSKILL.md holds the steps described in What the skill does. reference.md is what the assistant reads for the details: the result codes and what to do with each, the output part types and the shape of a question. The script needs Python 3 and nothing else.
Authorization
The skill authenticates as the person, with an integration token: the same per-person, revocable token a chat bot uses, limited to searching, running agents and the person's own conversations, whatever the person's role. Runs made through the skill appear in the usage report under the person's name.
Each person creates a token from their profile in the UI, as described in Connecting a person. The token is never stored in the skill's files. Revoke a token when it is no longer needed, and revoke any token that has been pasted into a chat.
Installing
Copy the search2o folder into the client's skills directory. For Claude Code:
cp -R search2o ~/.claude/skills/Then give the script the agent server's address and the token, either as environment variables:
export SEARCH2O_SERVER=https://search2o.example.com
export SEARCH2O_TOKEN=<the integration token>or as files, for a client that does not keep environment variables between sessions:
mkdir -p ~/.search2o
echo -n https://search2o.example.com > ~/.search2o/server
echo -n <the integration token> > ~/.search2o/token
chmod 600 ~/.search2o/tokenTesting the skill
python3 search2o/scripts/s2o.py search '{"query": "where is order 4182"}'
python3 search2o/scripts/s2o.py execAgent '{"agentName": "order_status", "inputs": {"query": "where is order 4182"}}'Each call prints one JSON object. A failed call prints a message and exits with a non-zero status, so the assistant sees what went wrong: a refused token, a server it cannot reach, or a call the token may not make.
Supported clients
Agent Skills is an open standard, published at agentskills.io, and the same folder works unmodified in every client that implements it, Claude Code, Cursor and OpenAI Codex among them.
The script calls your agent server over the network. In a client that runs on your machine, such as Claude Code or Cursor, the script uses the machine's network and reaches the agent server directly. In a client that runs scripts in a hosted environment, whether that environment can reach your agent server depends on the network settings of the client's account.
In Claude Code a skill can be distributed to a team through a plugin. Other clients have their own ways, and the folder is the same in each.
Adapting the skill to your company
The description
The description in SKILL.md is the only thing the assistant reads to decide whether a request is for the company's agents. If it is too broad, general requests go to search; if it is too narrow, requests that should reach an agent never do. Edit its examples to name the kinds of work your agents do, then test several requests that should use the skill and several that should not.
Tag scoping
search accepts a tag and returns only the agents that carry it. A company that wants narrower triggers can install two copies of the skill, one for support agents and one for finance agents, each with its own name, its own description, and instructions that pass its tag to search.
Long-running agents
The script waits up to 600 seconds for an agent to finish. Each agent has its own time limit, set with the draft. If an agent's limit is longer than 600 seconds, raise TIMEOUT in the script to match.

