Prowl
73/100
prowl
Benchmarked Sep 21, 2026

Mastodon API Specification (https://github.com/mastodon/mast

API provider (mastodon.local)

api platform_profile Streaming
Benchmark Your API

Score Breakdown

Parseability9/10
Documentation8/10
Token Efficiency8/10
Latency7/10
Error Clarity7/10
Consistency6/10
Auth Simplicity6/10
First-Try Success6/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
```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 pr
Execute

0/3 tests passed

TestEndpointStatusLatency
website_uptimeGET /None138ms
robots_txtGET /robots.txtNone121ms
llms_txtGET /llms.txtNone83ms
Interpret
{
  "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"
  ]
}

Agent Readiness

x402 Payments
Not supported
Streaming
Yes
Sandbox
None
Agent Auth
Unknown
SDKs
None listed
MCP Support
No

Embed your Prowl badge

Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.

Prowl agent-readiness badge
<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>

Options: ?style=light|dark · ?size=sm|md · ?variant=certified (claimed + DNS-verified only) · badge generator with preview

Want the full interactive view?

See operational metrics, LLM evaluations, agent readiness, and more.

Open in Dashboard