API provider (mastodon.local)
Full LLM thinking from the 4-phase benchmark pipeline.
```json
{
"service_type": "platform",
"base_url": "https://mastodon.local",
"auth_method": "oauth2",
"auth_config": {
"oauth_version": "2.0",
"grant_types": ["authorization_code", "client_credentials"],
"scopes": ["read", "write", "follow", "push"],
"app_registration_endpoint": "/api/v1/apps",
"token_endpoint": "/oauth/token",
"authorize_endpoint": "/oauth/authorize",
"note": "Mastodon instances require OAuth 2.0 for authenticated endpoints; public endpoints (e.g., timelines, statuses) are accessible without auth. Each instance is its own provider, so base_url and credentials are per-instance. Registered apps must be created per-instance via /api/v1/apps."
},
"endpoints": [
{
"path": "/api/v1/apps",
"method": "POST",
"description": "Register an application to obtain client_id and client_secret"
},
{
"path": "/api/v1/instance",
"method": "GET",
"description": "Retrieve instance metadata (title, description, version, configuration)"
},
{
"path": "/api/v1/timelines/home",
"method": "GET",
"description": "Home timeline for authenticated user"
},
{
"path": "/api/v1/timelines/public",
"method": "GET",
"description": "Public timeline (local or federated)"
},
{
"path": "/api/v1/statuses",
"method": "POST",
"description": "Publish a new status (toot)"
},
{
"path": "/api/v1/statuses/{id}",
"method": "GET",
"description": "Fetch a specific status"
},
{
"path": "/api/v1/accounts/{id}",
"method": "GET",
"description": "Fetch an account profile"
},
{
"path": "/api/v1/accounts/{id}/follow",
"method": "POST",
"description": "Follow an account"
},
{
"path": "/api/v1/notifications",
"method": "GET",
"description": "List notifications for the authenticated user"
},
{
"path": "/api/v2/search",
"method": "GET",
"description": "Search accounts, statuses, and hashtags"
},
{
"path": "/api/v1/streaming",
"method": "GET",
"description": "Streaming API (WebSocket/SSE) for real-time timelines and notifications"
}
],
"pricing_model": {
"type": "free",
"details": {
"note": "Mastodon is free, open-source (AGPL-3.0) federated social networking software. There is no commercial API pricing. Costs are borne by instance operators (server hosting, moderation, etc.). Many instances accept donations; some may have paid tiers for perks, but the API itself is unrestricted."
}
},
"rate_limits": {
"default": "300 requests per 5 minutes per access token (per authenticated user)",
"unauthenticated": "Limited by per-IP throttling (instance-configured; default 300/5min per IP for most endpoints)",
"headers": ["X-RateLimit-Limit", "X-RateLimit-Remaining", "X-RateLimit-Reset"],
"note": "Rate limits are configured per-instance and can vary. Admins can adjust via MASTODON_RATE_LIMITS env vars. Streaming API has separate connection/count limits."
},
"capabilities": [
"Federated social networking (ActivityPub/ActivityStreams)",
"Microblogging (statuses/posts up to instance-configured length, commonly 500 chars)",
"Timelines (home, local, federated, hashtag, list)",
"Account management (follow, block, mute, endorse)",
"Status interactions (favourite, boost/reblog, bookmark, reply)",
"Media attachments (images, video, audio) with async processing",
"Polls and pinned statuses",
"Direct messages (conversations)",
"Notifications and push subscriptions",
"Search across accounts, statuses, and hashtags",
"Lists and custom filters",
"Real-time Streaming API (WebSocket/SSE)",
"Admin API for instance moderation and management",
"OAuth 2.0 authorization with granular scopes",
"Multi-instance/federation: compatible clients can target any Mastodon-compatible server"
],
"raw_analysis": "The provided input describes a 'Mastodon API Specification' hosted at https://github.com/mastodon/mastodon with a placeholder/example instance URL of https://mastodon.local. Mastodon is a mature, widely-adopted open-source decentralized social networking platform (AGPL-3.0, first released 2016, maintained by Mastodon gGmbH and a large community). Rather than a single SaaS with one base URL, Mastodon operates as a federation: each server (instance) exposes its own REST + Streaming API at its own domain. Therefore 'https://mastodon.local' is just a local/example host, not a canonical endpoint; real usage requires pointing at a specific instance (e.g., https://mastodon.social). \n\nAPI characteristics: It is a well-documented REST API (OpenAPI/Rails-based) with OAuth 2.0 authentication. Unauthenticated access is allowed for many read endpoints. Applications must be registered per-instance via POST /api/v1/apps. Scopes are read/write/follow/push. The Streaming API pr0/3 tests passed
| Test | Endpoint | Status | Latency |
|---|---|---|---|
| website_uptime | GET / | None | 138ms |
| robots_txt | GET /robots.txt | None | 121ms |
| llms_txt | GET /llms.txt | None | 83ms |
{
"overall": 72,
"dimensions": {
"token_efficiency": 8.0,
"first_try_success": 6.0,
"response_parseability": 9.0,
"error_clarity": 7.0,
"doc_quality": 8.0,
"auth_simplicity": 6.0,
"latency": 7.0,
"consistency": 6.0
},
"pricing_normalized": {
"model": "free",
"api_cost": "$0",
"notes": "Open-source, no commercial API pricing. Instance operators bear hosting costs."
},
"issues": [
"Website uptime check failed with DNS resolution error (Name or service not known) — the primary domain did not resolve, suggesting a config/network issue in this probe or a transient outage",
"robots.txt and llms.txt both unreachable via DNS — no discoverable machine-readable policy files for agents",
"Federation model means behavior, rate limits, and moderation vary per instance — inconsistent agent experience across targets",
"OAuth 2.0 with granular scopes requires app registration per instance; no unified global auth",
"No central status page or unified uptime guarantee across the federated network"
],
"recommendations": [
"Verify DNS/probe configuration — the 'Name or service not known' errors on all three checks likely indicate the scorer's resolver wasn't pointed at a live instance (e.g., mastodon.social)",
"Publish llms.txt / ai.txt on flagship instances to signal agent-friendly policies",
"Document a canonical onboarding flow (pick instance, register app, obtain token) in a single getting-started page",
"Provide per-instance rate-limit and scope documentation surfaced via API (e.g., /api/v2/instance)",
"Encourage instance operators to expose status/health endpoints for client reliability checks"
]
}Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.
<a href="https://prowl.world/service/mastodon-api-specification-httpsgithubcommastodonmast">
<img src="https://prowl.world/badge/mastodon-api-specification-httpsgithubcommastodonmast.svg" height="56" alt="Agent-readiness on Prowl">
</a>
See operational metrics, LLM evaluations, agent readiness, and more.
Open in Dashboard