시작하기
모든 요청은 GET 이고, 응답은 UTF-8 JSON 입니다. 키는 무료이고 이메일 주소 하나에 하나씩 드립니다.
- 1
문의 쪽에서 ‘API 키’ 주제로 쓰려는 곳을 적어 보내면 키를 메일로 받습니다.
- 2
요청마다
Authorization: Bearer <키>헤더를 붙입니다. 키를 코드에 적지 말고 환경 변수에 두세요. - 3
합계부터 불러 보면 키가 맞는지 바로 압니다.
터미널 — 첫 요청복사했습니다
curl https://api.agentport.example/v1/stats \
-H "Authorization: Bearer $AGENTPORT_KEY"
엔드포인트
| 메서드 | 경로 | 하는 일 | 한도(무료) |
|---|---|---|---|
| GET | /v1/servers | 서버 목록 — 검색 · 거르기 · 정렬 · 쪽 | 60/분 |
| GET | /v1/servers/{slug} | 서버 하나 — 도구 · 설치 · 지원 클라이언트 | 60/분 |
| GET | /v1/clients | 클라이언트와 지원 기능 7가지 | 60/분 |
| GET | /v1/stats | 합계와 최근 주별 새 서버 | 10/분 |
GET/v1/servers
등재 서버 2,418개를 30개씩 돌려줍니다. 디렉터리 쪽의 검색·거르기·정렬과 같은 값을 씁니다.
매개변수
| 이름 | 형식 | 설명 | 기본 |
|---|---|---|---|
q | 문자열 | 이름 · 설명 · 범주에서 찾기 | — |
category | slug | 범주 12개 중 하나 — 예: files | 전체 |
host | local · remote | 호스팅 | 전체 |
lang | ts · py · go · rust · other | 언어 | 전체 |
sort | recommended · recent · hot-week · hot-all · name | 정렬 | recommended |
page | 정수 | 1부터 | 1 |
per_page | 정수 1–100 | 한 쪽의 수 | 30 |
요청 예시
터미널복사했습니다
curl "https://api.agentport.example/v1/servers?sort=hot-week" \
-H "Authorization: Bearer $AGENTPORT_KEY"
request.mjs복사했습니다
const res = await fetch("https://api.agentport.example/v1/servers?sort=hot-week", {
headers: { Authorization: "Bearer " + process.env.AGENTPORT_KEY },
});
const data = await res.json();
request.py복사했습니다
import os, requests
res = requests.get(
"https://api.agentport.example/v1/servers?sort=hot-week",
headers={"Authorization": "Bearer " + os.environ["AGENTPORT_KEY"]},
)
data = res.json()
응답
200 OK — application/json복사했습니다
{
"total": 2418,
"page": 1,
"per_page": 30,
"sort": "hot-week",
"items": [
{
"port": 1031,
"slug": "file-keeper",
"name": "파일 정리함",
"category": "files",
"lang": "ts",
"host": "local",
"class": "official",
"tools": 11,
"visits_week": 41200,
"registered": "2024-11-21"
},
{
"port": 2976,
"slug": "browser-hand",
"name": "브라우저 손",
"category": "browser",
"lang": "ts",
"host": "remote",
"class": "community",
"tools": 14,
"visits_week": 36800,
"registered": "2026-06-23",
"endpoint": "https://browser-hand.example/mcp"
}
]
}
GET/v1/servers/{slug}
서버 하나의 상세 — 상세 쪽에 보이는 도구 목록 · 설치 명령 · 지원 클라이언트 요약을 돌려줍니다.
요청 예시
터미널복사했습니다
curl "https://api.agentport.example/v1/servers/file-keeper" \
-H "Authorization: Bearer $AGENTPORT_KEY"
request.mjs복사했습니다
const res = await fetch("https://api.agentport.example/v1/servers/file-keeper", {
headers: { Authorization: "Bearer " + process.env.AGENTPORT_KEY },
});
const data = await res.json();
request.py복사했습니다
import os, requests
res = requests.get(
"https://api.agentport.example/v1/servers/file-keeper",
headers={"Authorization": "Bearer " + os.environ["AGENTPORT_KEY"]},
)
data = res.json()
응답
200 OK — application/json복사했습니다
{
"port": 1031,
"slug": "file-keeper",
"name": "파일 정리함",
"version": "v2.4.1",
"transport": ["stdio"],
"tools": [
"read", "write", "list", "move", "copy", "find",
"stat", "mkdir", "tree", "compare", "trash"
],
"install": {
"command": "npx",
"args": ["-y", "@osolgil/file-keeper"]
},
"clients": { "supported": 4, "partial": 2, "checked": "2026-09-24" },
"rank_week": 1
}
GET/v1/clients
클라이언트 164개와 지원 기능 7가지. 값은 yes · partial · no · unknown 넷입니다(v1.3).
터미널복사했습니다
curl "https://api.agentport.example/v1/clients?platform=desktop" \
-H "Authorization: Bearer $AGENTPORT_KEY"
200 OK — application/json복사했습니다
{
"total": 164,
"items": [
{
"port": 7012,
"slug": "deungdae-desk",
"name": "등대 데스크",
"platform": "desktop",
"features": {
"tools": "yes",
"resources": "yes",
"prompts": "yes",
"sampling": "partial",
"roots": "yes",
"remote": "yes",
"oauth": "yes"
},
"checked": "2026-09-24"
}
]
}
GET/v1/stats
통계 쪽의 숫자와 같습니다. 매주 월요일 아침에 갱신합니다.
200 OK — application/json복사했습니다
{
"updated": "2026-09-26",
"servers": 2418,
"servers_week": 37,
"servers_12w": 412,
"clients": 164,
"apps": 38,
"remote_share": 0.380,
"visits_week": 486200,
"tools_avg": 7.4,
"weekly_new": [33, 29, 41, 37]
}
한도
한도를 넘으면 429 와 함께 Retry-After 헤더로 몇 초 뒤에 다시 부를지 알려 줍니다.
| 등급 | 분당 | 하루 | 받는 법 |
|---|---|---|---|
| 무료 | 60 | 10,000 | 문의 쪽에서 바로 |
| 파트너 | 600 | 200,000 | 쓰는 곳을 알려 주면 편집부가 검토 |
오류 코드
| 코드 | 이름 | 뜻 |
|---|---|---|
| 400 | bad_request | 매개변수 값이 틀렸다 — 예: 없는 범주 |
| 401 | unauthorized | 키가 없거나 틀렸다 |
| 404 | not_found | 그런 slug 의 서버가 없다 — 보관된 서버도 여기 |
| 429 | rate_limited | 한도를 넘었다 — Retry-After 초만큼 기다린다 |
404 — 오류 본문복사했습니다
{
"error": "not_found",
"message": "no server with slug 'file-keepr'",
"hint": "did you mean 'file-keeper'?"
}
변경 기록
- v1.3/v1/clients 에 지원 기능 7가지 필드를 더했다
- v1.2/v1/stats 를 열었다 — 통계 쪽과 같은 숫자
- v1.1정렬 name 이 한글 가나다순을 따르게 고쳤다
- v1.0첫 공개 — 서버 목록과 상세