MCP Tools Reference
Complete reference for all Model Context Protocol tools provided by the ActivityPub MCP Server. These tools enable LLMs to interact with the fediverse.
Discovery Tools
Tools for discovering actors, instances, and content across the fediverse.
discover-actor
Discover and get detailed information about fediverse actors (users).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
identifier | string | Yes | Actor identifier in WebFinger format (@user@domain) or ActivityPub URL |
Examples
# WebFinger format
discover-actor @mastodon@mastodon.social
# ActivityPub URL
discover-actor https://mastodon.social/users/mastodon
# Profile URL
discover-actor https://mastodon.social/@mastodon Response
Returns an ActivityPub Actor object with:
- Actor ID and type
- Display name and username
- Profile information (bio, avatar, etc.)
- Public key for verification
- Endpoints (inbox, outbox, followers, etc.)
discover-instances
Discover popular fediverse instances by category, topic, or size.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
category | enum | No | Type of fediverse software: "mastodon", "pleroma", "misskey", "peertube", "pixelfed", "lemmy", or "all" |
topic | string | No | Topic or interest to search for (e.g., "technology", "art", "gaming") |
size | enum | No | Instance size preference: "small", "medium", or "large" |
region | string | No | Geographic region or language |
beginnerFriendly | boolean | No | Show only beginner-friendly instances |
Examples
# Find Mastodon instances
discover-instances --category mastodon
# Find technology-focused instances
discover-instances --topic technology
# Find small, beginner-friendly instances
discover-instances --size small --beginnerFriendly true
# Find instances in a specific region
discover-instances --region europe recommend-instances
Get personalized fediverse instance recommendations based on interests.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
interests | array | Yes | List of your interests or topics (e.g., ["technology", "opensource", "privacy"]) |
Examples
# Get recommendations based on interests
recommend-instances --interests ["technology", "opensource"]
# Multiple interests
recommend-instances --interests ["art", "photography", "design"] Response
Returns personalized instance recommendations with:
- Instance domain and name
- Match score based on interests
- Instance description and focus
- User statistics
- Registration status
Information Tools
Tools for getting information about instances, timelines, and content.
get-instance-info
Get detailed information about a fediverse instance.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Instance domain name (e.g., "mastodon.social") |
Examples
# Get info about Mastodon.social
get-instance-info mastodon.social
# Check a smaller instance
get-instance-info fosstodon.org Response
Returns instance metadata including:
- Instance name and description
- Software version and type
- User and post statistics
- Instance rules and policies
- Contact information
- Supported features
fetch-timeline
Fetch recent posts from any actor's timeline in the fediverse.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
identifier | string | Yes | Actor identifier (e.g., user@example.social) |
limit | number | No | Number of posts to fetch (default: 20, max: 50) |
Examples
# Get recent posts from an actor
fetch-timeline user@mastodon.social
# Limit to 10 posts
fetch-timeline admin@fosstodon.org --limit 10 Response
Returns timeline data including:
- Array of recent posts/activities
- Post content and metadata
- Author information
- Engagement metrics (likes, boosts, replies)
- Media attachments
search-instance
Search for content on a specific fediverse instance.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Instance domain (e.g., example.social) |
query | string | Yes | Search query |
type | enum | No | Type of content to search for: "accounts", "statuses", or "hashtags" (default: "accounts") |
Examples
# Search for accounts
search-instance mastodon.social "opensource"
# Search for posts/statuses
search-instance fosstodon.org "linux" --type statuses
# Search for hashtags
search-instance pixelfed.social "photography" --type hashtags Response
Returns search results based on type:
- accounts: User profiles matching the query
- statuses: Posts/toots containing the search terms
- hashtags: Hashtags matching the query
Timeline Tools
Tools for accessing public timelines and trending content from fediverse instances.
get-trending-hashtags
Get currently trending hashtags on a fediverse instance.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Instance domain (e.g., "mastodon.social") |
limit | number | No | Number of hashtags to fetch (default: 20, max: 40) |
Examples
# Get trending hashtags
get-trending-hashtags mastodon.social
# Limit results
get-trending-hashtags fosstodon.org --limit 10 get-trending-posts
Get currently trending posts on a fediverse instance.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Instance domain (e.g., "mastodon.social") |
limit | number | No | Number of posts to fetch (default: 20, max: 40) |
Examples
# Get trending posts
get-trending-posts mastodon.social get-local-timeline
Get the local public timeline from a fediverse instance (posts from local users only).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Instance domain (e.g., "mastodon.social") |
limit | number | No | Number of posts to fetch (default: 20, max: 40) |
maxId | string | No | Return results older than this ID (for pagination) |
Examples
# Get local timeline
get-local-timeline fosstodon.org
# Paginate results
get-local-timeline fosstodon.org --maxId 123456789 get-federated-timeline
Get the federated public timeline from a fediverse instance (posts from all connected instances).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Instance domain (e.g., "mastodon.social") |
limit | number | No | Number of posts to fetch (default: 20, max: 40) |
maxId | string | No | Return results older than this ID (for pagination) |
Examples
# Get federated timeline
get-federated-timeline mastodon.social Content Tools
Tools for fetching and searching content in the fediverse.
get-post-thread
Fetch a post and its full conversation thread including replies and parent posts.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
postUrl | string | Yes | The URL of the post to fetch the thread for |
depth | number | No | How many levels of nested replies to fetch (default: 2, max: 5) |
maxReplies | number | No | Maximum number of replies to fetch (default: 50, max: 100) |
Examples
# Get post thread
get-post-thread https://mastodon.social/@user/123456789
# Get deeper thread
get-post-thread https://mastodon.social/@user/123456789 --depth 3 --maxReplies 100 search-accounts
Search for accounts/users on a fediverse instance.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Instance domain to search |
query | string | Yes | Search query (username or display name) |
limit | number | No | Number of results (default: 20, max: 40) |
Examples
# Search for accounts
search-accounts mastodon.social "developer" search-hashtags
Search for hashtags on a fediverse instance.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Instance domain to search |
query | string | Yes | Search query (hashtag name without #) |
limit | number | No | Number of results (default: 20, max: 40) |
Examples
# Search for hashtags
search-hashtags mastodon.social "programming" search-posts
Search for posts/statuses on a fediverse instance.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Instance domain to search |
query | string | Yes | Search query (keywords or hashtag) |
limit | number | No | Number of results (default: 20, max: 40) |
Examples
# Search for posts
search-posts mastodon.social "typescript tutorial" search NEW
Unified search across accounts, posts, and hashtags in a single query. Combines all search types with optional filtering.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Instance domain to search |
query | string | Yes | Search query |
type | enum | No | Filter results: "all", "accounts", "posts", "hashtags" (default: "all") |
limit | number | No | Results per type (default: 20, max: 40) |
resolve | boolean | No | Attempt WebFinger lookup for remote accounts |
Examples
# Search everything
search mastodon.social "programming"
# Search only accounts
search mastodon.social "developer" --type accounts
# Search with remote lookup
search fosstodon.org "@user@mastodon.social" --resolve true Response
Returns combined results with:
- Accounts section with profile summaries
- Posts section with content previews
- Hashtags section with usage statistics
- Result counts for each category
Batch Tools
Tools for fetching multiple items in a single request.
batch-fetch-actors
Fetch multiple actors in a single request for efficiency.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
identifiers | array | Yes | Array of actor identifiers (e.g., ["user1@mastodon.social", "user2@fosstodon.org"]) |
Examples
# Fetch multiple actors
batch-fetch-actors --identifiers ["user1@mastodon.social", "user2@fosstodon.org"] batch-fetch-posts
Fetch multiple posts in a single request for efficiency.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
urls | array | Yes | Array of post URLs |
Examples
# Fetch multiple posts
batch-fetch-posts --urls ["https://mastodon.social/@user/123", "https://fosstodon.org/@user/456"] Live Discovery Tools
Tools for real-time discovery using external APIs.
discover-instances-live
Discover fediverse instances in real-time using the instances.social API with advanced filtering.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
software | enum | No | Filter by software: "mastodon", "pleroma", "misskey", "pixelfed", "lemmy", "peertube", "any" |
language | string | No | Filter by language code (e.g., "en", "de", "ja") |
minUsers | number | No | Minimum number of users |
maxUsers | number | No | Maximum number of users |
openRegistrations | boolean | No | Only show instances with open registrations |
sortBy | enum | No | Sort by: "users", "statuses", "connections", "name" |
limit | number | No | Number of results (default: 20, max: 50) |
Examples
# Find Mastodon instances
discover-instances-live --software mastodon
# Find large English instances with open registration
discover-instances-live --language en --minUsers 10000 --openRegistrations true
# Find small community instances
discover-instances-live --maxUsers 5000 --sortBy users Utility Tools
Additional tools for server management and debugging.
health-check
Check the health status of the ActivityPub MCP server.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
includeMetrics | boolean | No | Include detailed performance metrics in the response |
Examples
# Basic health check
health-check
# Include detailed metrics
health-check --includeMetrics true Response
Returns server status including:
- Server uptime
- Memory usage
- Health status (healthy/degraded/unhealthy)
- Optional: Detailed performance metrics
performance-metrics
Get detailed performance metrics for the ActivityPub MCP server.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
operation | string | No | Specific operation to get metrics for (e.g., 'discover-actor') |
Examples
# Get all performance metrics
performance-metrics
# Get metrics for a specific operation
performance-metrics --operation discover-actor Response
Returns performance data including:
- Request counts by operation
- Average response times
- Success/failure rates
- Cache hit rates
- Resource utilization
Authenticated Write Tools v1.1.0
Tools for authenticated write operations. Requires OAuth token configuration. See the Configuration Guide for setup instructions.
Account Management
list-accounts
List all configured accounts with their authentication status.
Parameters
None required.
Examples
# List all configured accounts
list-accounts Response
Returns array of configured accounts with:
- Account ID and instance domain
- Username
- Active status indicator
switch-account
Switch the active account for subsequent authenticated operations.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The ID of the account to switch to |
Examples
# Switch to work account
switch-account --accountId work
# Switch to personal account
switch-account --accountId personal verify-account
Verify the credentials and permissions of the active account.
Parameters
None required. Uses the currently active account.
Examples
# Verify current account credentials
verify-account Response
Returns verification status with:
- Account details (username, display name)
- Instance information
- Granted OAuth scopes
- Token validity status
Posting Tools
post-status
Create a new post/status on the fediverse.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
content | string | Yes | The text content of the post |
visibility | enum | No | Post visibility: "public", "unlisted", "private", "direct" (default: "public") |
spoilerText | string | No | Content warning/spoiler text |
sensitive | boolean | No | Mark media as sensitive |
language | string | No | ISO 639-1 language code (e.g., "en") |
Examples
# Simple public post
post-status --content "Hello fediverse!"
# Post with content warning
post-status --content "Spoiler discussion here" --spoilerText "Movie spoilers"
# Unlisted post
post-status --content "Only visible to followers" --visibility unlisted reply-to-post
Reply to an existing post.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
postUrl | string | Yes | URL of the post to reply to |
content | string | Yes | The reply content |
visibility | enum | No | Reply visibility (defaults to original post's visibility) |
spoilerText | string | No | Content warning/spoiler text |
Examples
# Reply to a post
reply-to-post --postUrl "https://mastodon.social/@user/123456" --content "Great point!" delete-post
Delete one of your own posts.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
postId | string | Yes | ID of the post to delete |
Examples
# Delete a post
delete-post --postId "123456789" Interaction Tools
boost-post / unboost-post
Boost (reblog) or unboost a post to share it with your followers.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
postUrl | string | Yes | URL of the post to boost/unboost |
Examples
# Boost a post
boost-post --postUrl "https://mastodon.social/@user/123456"
# Remove boost
unboost-post --postUrl "https://mastodon.social/@user/123456" favourite-post / unfavourite-post
Favourite (like) or unfavourite a post.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
postUrl | string | Yes | URL of the post to favourite/unfavourite |
Examples
# Favourite a post
favourite-post --postUrl "https://mastodon.social/@user/123456"
# Remove favourite
unfavourite-post --postUrl "https://mastodon.social/@user/123456" bookmark-post / unbookmark-post
Bookmark or unbookmark a post for later reference.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
postUrl | string | Yes | URL of the post to bookmark/unbookmark |
Examples
# Bookmark a post
bookmark-post --postUrl "https://mastodon.social/@user/123456"
# Remove bookmark
unbookmark-post --postUrl "https://mastodon.social/@user/123456" Relationship Tools
get-relationship NEW
Check your relationship status with one or more accounts (following, followed_by, blocking, muting, etc.).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
accountIds | array | Yes | Array of account IDs to check relationship status |
Examples
# Check relationship with accounts
get-relationship --accountIds ["12345", "67890"] Response
Returns relationship status for each account:
- following - Whether you follow them
- followed_by - Whether they follow you
- blocking - Whether you've blocked them
- muting - Whether you've muted them
- requested - Whether you've sent a follow request
follow-account / unfollow-account
Follow or unfollow another account.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
identifier | string | Yes | Account identifier (@user@domain or URL) |
Examples
# Follow an account
follow-account --identifier "@user@mastodon.social"
# Unfollow an account
unfollow-account --identifier "@user@mastodon.social" mute-account / unmute-account
Mute or unmute an account (hide their posts without unfollowing).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
identifier | string | Yes | Account identifier (@user@domain or URL) |
duration | number | No | Mute duration in seconds (0 for permanent, mute-account only) |
notifications | boolean | No | Also mute notifications (default: true, mute-account only) |
Examples
# Mute an account permanently
mute-account --identifier "@user@mastodon.social"
# Mute for 24 hours
mute-account --identifier "@user@mastodon.social" --duration 86400
# Unmute an account
unmute-account --identifier "@user@mastodon.social" block-account / unblock-account
Block or unblock an account (prevents all interactions).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
identifier | string | Yes | Account identifier (@user@domain or URL) |
Examples
# Block an account
block-account --identifier "@user@mastodon.social"
# Unblock an account
unblock-account --identifier "@user@mastodon.social" Authenticated Timelines
get-home-timeline
Get your authenticated home timeline (posts from followed accounts).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Number of posts to fetch (default: 20, max: 40) |
maxId | string | No | Return results older than this ID (pagination) |
sinceId | string | No | Return results newer than this ID |
Examples
# Get home timeline
get-home-timeline
# Paginate through timeline
get-home-timeline --maxId "123456789" --limit 40 get-notifications
Get your notifications (mentions, follows, boosts, favourites).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Number of notifications (default: 20, max: 40) |
types | array | No | Filter by type: "mention", "reblog", "favourite", "follow", "poll", "follow_request" |
excludeTypes | array | No | Exclude specific notification types |
Examples
# Get all notifications
get-notifications
# Get only mentions
get-notifications --types ["mention"]
# Exclude follow notifications
get-notifications --excludeTypes ["follow", "follow_request"] get-bookmarks
Get your bookmarked posts.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Number of bookmarks (default: 20, max: 40) |
maxId | string | No | Return results older than this ID |
Examples
# Get bookmarks
get-bookmarks --limit 40 get-favourites
Get posts you have favourited.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Number of favourites (default: 20, max: 40) |
maxId | string | No | Return results older than this ID |
Examples
# Get favourited posts
get-favourites --limit 40 Poll Tools NEW
vote-on-poll
Vote on a poll attached to a post. Supports single and multiple choice polls.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
pollId | string | Yes | The ID of the poll to vote on |
choices | array | Yes | Array of choice indices (0-based). Single choice polls accept one index, multiple choice can accept several. |
Examples
# Vote for option 1 (index 0)
vote-on-poll --pollId "123456" --choices [0]
# Vote for multiple options in a multi-choice poll
vote-on-poll --pollId "123456" --choices [0, 2] Response
Returns the updated poll with:
- Current vote counts for each option
- Visual bar chart of results
- Your vote confirmation
- Poll expiration time
Media Tools NEW
upload-media
Upload media files (images, videos, audio) to use in posts. Supports alt text for accessibility.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
filePath | string | Yes | Local file path or URL of the media to upload |
description | string | No | Alt text description for accessibility (highly recommended) |
focus | string | No | Focal point as "x,y" where each value is -1.0 to 1.0 (determines crop center) |
Examples
# Upload image with alt text
upload-media --filePath "/path/to/image.jpg" --description "A sunset over mountains"
# Upload with focal point for cropping
upload-media --filePath "/path/to/photo.png" --description "Portrait photo" --focus "0.0,0.5"
# Upload from URL
upload-media --filePath "https://example.com/image.jpg" --description "External image" Response
Returns media attachment details:
- Media ID (use in post-status --mediaIds)
- Media type (image, video, audio, gifv)
- Preview URL
- Blurhash for placeholders
Scheduling Tools NEW
get-scheduled-posts
List all your pending scheduled posts.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Number of scheduled posts to fetch (default: 20, max: 40) |
maxId | string | No | Return results older than this ID (pagination) |
Examples
# Get all scheduled posts
get-scheduled-posts
# Get with limit
get-scheduled-posts --limit 10 Response
Returns list of scheduled posts with:
- Scheduled post ID
- Scheduled publication time
- Post content and parameters
- Attached media (if any)
update-scheduled-post
Reschedule a pending post to a new time.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
scheduledPostId | string | Yes | ID of the scheduled post to update |
scheduledAt | string | Yes | New scheduled time in ISO 8601 format (e.g., "2026-02-14T18:00:00.000Z") |
Examples
# Reschedule a post
update-scheduled-post --scheduledPostId "123" --scheduledAt "2026-02-14T18:00:00.000Z" cancel-scheduled-post
Cancel a scheduled post before it's published.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
scheduledPostId | string | Yes | ID of the scheduled post to cancel |
Examples
# Cancel a scheduled post
cancel-scheduled-post --scheduledPostId "123" Content Export Tools v1.1.0
Tools for exporting fediverse content in various formats (JSON, Markdown, CSV).
export-timeline
Export an actor's timeline to a file in your chosen format.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
identifier | string | Yes | Actor identifier (@user@domain or URL) |
format | enum | No | Export format: "json", "markdown", "csv" (default: "json") |
limit | number | No | Number of posts to export (default: 100, max: 500) |
includeBoosts | boolean | No | Include boosted posts (default: true) |
includeReplies | boolean | No | Include replies (default: true) |
Examples
# Export timeline as JSON
export-timeline --identifier "@user@mastodon.social"
# Export as Markdown, original posts only
export-timeline --identifier "@user@mastodon.social" --format markdown --includeBoosts false --includeReplies false
# Export as CSV with limit
export-timeline --identifier "@user@mastodon.social" --format csv --limit 200 export-thread
Export a post thread with all ancestors and replies.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
postUrl | string | Yes | URL of the post |
format | enum | No | Export format: "json", "markdown", "csv" (default: "json") |
depth | number | No | Max reply depth (default: 3, max: 10) |
Examples
# Export thread as JSON
export-thread --postUrl "https://mastodon.social/@user/123456"
# Export as readable Markdown
export-thread --postUrl "https://mastodon.social/@user/123456" --format markdown --depth 5 export-account-info
Export comprehensive account information including profile, stats, and recent activity.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
identifier | string | Yes | Account identifier (@user@domain or URL) |
format | enum | No | Export format: "json", "markdown" (default: "json") |
includeTimeline | boolean | No | Include recent posts (default: false) |
timelineLimit | number | No | Number of posts if includeTimeline is true (default: 50) |
Examples
# Export account info as JSON
export-account-info --identifier "@user@mastodon.social"
# Export with timeline as Markdown
export-account-info --identifier "@user@mastodon.social" --format markdown --includeTimeline true export-hashtag
Export posts containing a specific hashtag from an instance.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Instance domain to search |
hashtag | string | Yes | Hashtag to export (without #) |
format | enum | No | Export format: "json", "markdown", "csv" (default: "json") |
limit | number | No | Number of posts (default: 100, max: 500) |
local | boolean | No | Only local posts (default: false) |
Examples
# Export hashtag posts as JSON
export-hashtag --domain mastodon.social --hashtag "programming"
# Export local posts only as Markdown
export-hashtag --domain fosstodon.org --hashtag "opensource" --format markdown --local true
# Export as CSV for analysis
export-hashtag --domain mastodon.social --hashtag "rust" --format csv --limit 200 Error Handling
All tools follow consistent error handling patterns:
Validation Errors
Returned when parameters are invalid or missing:
{`{
"error": "Invalid parameter",
"message": "Actor identifier must be in @user@domain format or valid URL",
"code": "INVALID_PARAMETER"
}`} Network Errors
Returned when external services are unreachable:
{`{
"error": "Network error",
"message": "Failed to connect to instance: connection timeout",
"code": "NETWORK_ERROR"
}`} Not Found Errors
Returned when requested resources don't exist:
{`{
"error": "Not found",
"message": "Actor not found or not accessible",
"code": "NOT_FOUND"
}`}