Agent contacts
AI agent contacts — add, list, remove MCP contacts. Use when someone gives an agent URL, or when you need to view/remove contacts.From its SKILL.md
npx -y skills add aAAaqwq/AGI-Super-Team --skill agent-contactsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- runs commandsInstructs the agent to run 2 commands, including `claude mcp add <slug> --transport http <mcp_url>` and 1 more.
- fetches URLsInstructs the agent to fetch 1 URL, including discovery_url.
SKILL.md
4.9 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Agent Contacts
Contact book for AI agents. Add an MCP address and your Claude Code can communicate with other agents.
When to use
/agent-contacts add <url>— add a new contact/agent-contacts list— show all contacts/agent-contacts remove <name>— remove a contact- When someone gives you an agent/bot URL
Paths
| What | Path |
|---|---|
| Contacts DB | ~/.claude/agent-contacts.json |
contacts.json format
[
{
"name": "Your Name",
"slug": "ivan-schedule",
"mcp_url": "https://your-agent.example.com/mcp/",
"discovery_url": "https://your-agent.example.com/.well-known/agent.json",
"capabilities": ["scheduling"],
"description": "Scheduling agent for Your Name",
"added": "2026-02-26"
}
]
How to execute
Parse $ARGUMENTS to determine the command: first word is the command (add, list, remove), the rest is the argument.
Add: /agent-contacts add <url>
import json, re
from datetime import date
from pathlib import Path
CONTACTS_FILE = Path.home() / ".claude" / "agent-contacts.json"
# 1. Load existing contacts
if CONTACTS_FILE.exists():
contacts = json.loads(CONTACTS_FILE.read_text())
else:
contacts = []
# 2. Normalize URL — $ARGUMENTS[1] is the URL
url = "$1".strip().rstrip("/")
if not url.endswith("agent.json"):
discovery_url = url + "/.well-known/agent.json"
else:
discovery_url = url
url = url.rsplit("/.well-known/agent.json", 1)[0]
# 3. Use WebFetch to get agent.json content, then parse:
# - name = agent_data["name"]
# - description = agent_data.get("description", "")
# - capabilities = list(agent_data.get("capabilities", {}).keys())
# - mcp_url = agent_data["capabilities"][first_cap]["url"]
# Ensure mcp_url ends with "/"
# 4. Generate slug
slug = re.sub(r"[^a-z0-9-]", "", name.lower().replace(" ", "-"))
# 5. Check for duplicates
if any(c["slug"] == slug for c in contacts):
print(f"Contact '{name}' already exists.")
else:
contacts.append({
"name": name,
"slug": slug,
"mcp_url": mcp_url,
"discovery_url": discovery_url,
"capabilities": capabilities,
"description": description,
"added": str(date.today()),
})
CONTACTS_FILE.write_text(json.dumps(contacts, indent=2, ensure_ascii=False))
After saving to JSON, run:
claude mcp add <slug> --transport http <mcp_url>
Notify: "Contact <name> added. Restart Claude Code session to use their tools."
List: /agent-contacts list
import json
from pathlib import Path
CONTACTS_FILE = Path.home() / ".claude" / "agent-contacts.json"
if not CONTACTS_FILE.exists():
print("No agent contacts yet. Use '/agent-contacts add <url>' to add one.")
else:
contacts = json.loads(CONTACTS_FILE.read_text())
if not contacts:
print("No agent contacts yet.")
else:
for i, c in enumerate(contacts, 1):
caps = ", ".join(c.get("capabilities", []))
print(f" {i}. {c['name']} ({c['slug']})")
print(f" MCP: {c['mcp_url']}")
print(f" Capabilities: {caps}")
print()
Remove: /agent-contacts remove <name-or-slug>
import json
from pathlib import Path
CONTACTS_FILE = Path.home() / ".claude" / "agent-contacts.json"
target = "$1".strip().lower() # name or slug
contacts = json.loads(CONTACTS_FILE.read_text())
match = [c for c in contacts if c["slug"] == target or c["name"].lower() == target]
if not match:
print(f"Contact '{target}' not found.")
else:
slug = match[0]["slug"]
name = match[0]["name"]
contacts = [c for c in contacts if c["slug"] != slug]
CONTACTS_FILE.write_text(json.dumps(contacts, indent=2, ensure_ascii=False))
After removing from JSON, run:
claude mcp remove <slug>
Notify: "Contact <name> removed."
How to share your address with others
Simply send the link:
https://your-agent.example.com/.well-known/agent.json
If the person has this skill:
/agent-contacts add https://your-agent.example.com
If they don't have the skill -- one command:
claude mcp add ivan-schedule --transport http https://your-agent.example.com/mcp/
Important
agent-contacts.jsonis created automatically on the firstadd- Slug must be unique (used as MCP server name in Claude Code)
- MCP URL must end with
/(trailing slash) - After
add, a new session of Claude Code is required for MCP tools to become available - This skill has side effects (
claude mcp add/remove), hencedisable-model-invocation: true
Related skills
deploy-website— deploy page with instructions for new contacts
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most context ai engineering skills give in ~1.2k tokens
Counted across 1,328 of the 2,349 authors here whose files we hold, read 2026-09-06
- Dispatch a fresh subagent for each taskin 76 of 1328, across 59 files
- Perform spec compliance review before code quality reviewin 44 of 1328, across 34 files
- Dispatch a final code reviewer after all tasksin 38 of 1328, across 26 files
- Answer subagent questions before allowing implementationin 36 of 1328, across 26 files
- Use the least powerful model capable of the taskin 33 of 1328, across 26 files
- Create a TodoWrite list for all tasksin 32 of 1328, across 22 files
- Perform a task review after each implementationin 31 of 1328, across 24 files
- Extract all tasks and context from the planin 29 of 1328, across 20 files
- Provide full task text to subagentsin 28 of 1328, across 20 files
- Use git worktrees for isolated workspacesin 25 of 1328, across 20 files
- Specify the model explicitly when dispatching a subagentin 23 of 1328, across 18 files
- Execute all tasks from the plan without stoppingin 21 of 1328, across 16 files
Said here and by no other author read
- Fetch agent data from discovery URL
- Generate unique slug for new contacts
- Save contact details to JSON file
- Run mcp add command after saving
- Run mcp remove command after deleting
- Notify user after adding or removing
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.