# info.description
Public read APIs for agentcommunity.org — the community applying for the proposed .agent top-level domain (pending ICANN approval). Includes member-directory search, directory profiles, globe data, site content search, and a hosted MCP server at /mcp. All listed endpoints are free and require no authentication. API versioning: public REST endpoints are versioned by URL path (/api/v1/). Breaking changes ship as a new version prefix; prior versions are intended to remain available for a transition period (target: at least 6 months) after a successor ships, with retirement announced in the spec via deprecated: true. Unversioned legacy paths are deprecated aliases of /api/v1.

# paths./api/v1/search.get.description
Full-text search over member organization profiles. Rate limited to 30 requests/minute per IP.

# paths./api/v1/search.get.responses.200.headers.RateLimit-Policy.description
IETF rate-limit policy, e.g. "30;w=60" (30 requests per 60s per IP).

# paths./api/v1/search.get.responses.429.headers.RateLimit-Policy.description
IETF rate-limit policy, e.g. "30;w=60" (30 requests per 60s per IP).

# paths./api/map/search.get.summary
Search the member directory (legacy alias)

# paths./api/map/search.get.description
Unversioned alias of /api/v1/search. Still supported; new integrations should use /api/v1/search.

# paths./api/map/search.get.responses.200.headers.RateLimit-Policy.description
IETF rate-limit policy, e.g. "30;w=60" (30 requests per 60s per IP).

# paths./api/map/search.get.responses.429.headers.RateLimit-Policy.description
IETF rate-limit policy, e.g. "30;w=60" (30 requests per 60s per IP).

# paths./api/v1/profiles.get.description
Full directory payload: aggregate stats, collections of profiles, and featured members. Cached (5 min).

# paths./api/v1/members.get.description
Flat, paginated list of member organizations. Agent-friendly alternative to the nested /api/v1/profiles payload. Cached (5 min).

# paths./api/v1/members.get.responses.200.description
Paginated flat list of member organizations.

# paths./api/v1/members.get.responses.200.content.application/json.schema.properties.total.description
Total categorized member profiles in the public directory — not necessarily the full community member count.

# paths./api/map/profiles.get.summary
List all member directory profiles (legacy alias)

# paths./api/map/profiles.get.description
Unversioned alias of /api/v1/profiles. Still supported; new integrations should use /api/v1/profiles.

# paths./api/v1/globe.get.description
Geographic point data for the member globe visualization. Cached (5 min).

# paths./api/map/globe.get.description
Unversioned alias of /api/v1/globe. Still supported; new integrations should use /api/v1/globe.

# paths./api/content-search.get.description
Unversioned alias of /api/v1/content-search. Still supported; new integrations should use /api/v1/content-search.

# paths./mcp.post.description
Model Context Protocol endpoint (JSON-RPC 2.0 over HTTP POST, protocol 2025-06-18, stateless, no auth). Tools: search_members, get_member_profile, get_community_stats, register_agent, verify_certificate. Rate limited per IP: 30 tools/call requests/min (RateLimit-Limit: 30, no Remaining — the underlying platform exposes no per-request counters). register_agent is additionally enforced by a server-side KV request counter, 2/min (best-effort under concurrent bursts, not strongly consistent): its responses carry RateLimit-Limit: 2 and a real RateLimit-Remaining instead of the generic 30 set. Manifest at /.well-known/mcp.

# paths./mcp.post.parameters[].description
Optional idempotency key honored for register_agent tool calls: the same key from the same caller IP within 24h returns the original result instead of re-registering. Replayed responses carry Idempotency-Replayed: true.

# paths./mcp.post.responses.200.headers.RateLimit-Policy.description
IETF rate-limit policy, e.g. "30;w=60" (30 requests per 60s per IP).

# paths./mcp.post.responses.200.headers.RateLimit-Remaining.description
Present ONLY on register_agent tools/call responses that consulted the KV counter — a real remaining count for the 2;w=60 register-specific policy (RateLimit-Limit is 2, not the generic 30, on these responses). Absent on all other tools/call responses; we never fabricate a Remaining value.

# paths./mcp.post.responses.200.headers.Idempotency-Replayed.description
Present and set to "true" only when the response is a replay of a stored register_agent result for the given Idempotency-Key + caller IP.

# components.schemas.GlobePoint.properties.count.description
Number of member organizations aggregated into this point (city cluster or country-jitter cell).

# components.securitySchemes.supabaseOidc.description
OpenID Connect via Supabase Auth. Member-only surfaces (dashboard) use cookie sessions established through this OIDC flow; the public APIs above require no authentication. No API tokens are issued for these endpoints — this scheme documents the human sign-in flow only.

# components.securitySchemes.supabaseOAuth.description
OAuth 2.0 authorization-code flow (PKCE S256) via Supabase Auth. No API tokens are issued for the public endpoints in this spec; this scheme documents the human sign-in flow only.