analyze_moderation_status
Analyze moderation status of a post or user. Returns content labels, moderation decisions, and personal moderation state (blocks, mutes). Subject can be a DID (for users) or AT-URI (for posts).
Authentication
Enhanced - This tool works without authentication but provides additional personal moderation state when authenticated.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
subject | string | Yes | - | DID (for users) or AT-URI (for posts) to analyze. |
includeLabels | boolean | No | true | Whether to include content labels in the response. |
Response
typescript
{
success: boolean;
subject: string;
subjectType: 'user' | 'post';
moderation: {
labels?: Array<{
src: string;
uri: string;
val: string;
cts: string;
}>;
blocked?: boolean;
muted?: boolean;
blockedBy?: boolean;
blocking?: boolean;
mutedByList?: boolean;
blockedByList?: boolean;
};
analysis: {
hasContentWarnings: boolean;
isNSFW: boolean;
isSpam: boolean;
requiresWarning: boolean;
safetyLevel: 'safe' | 'warning' | 'restricted' | 'blocked';
};
}Examples
Analyze User Moderation Status
json
{
"subject": "did:plc:abc123",
"includeLabels": true
}Analyze Post Moderation Status
json
{
"subject": "at://did:plc:abc123/app.bsky.feed.post/xyz1",
"includeLabels": true
}Quick Moderation Check (No Labels)
json
{
"subject": "alice.bsky.social",
"includeLabels": false
}Error Handling
Common errors:
InvalidRequest: Invalid subject or parametersSubjectNotFound: User or post does not existRateLimitExceeded: Too many requests in a short period
Best Practices
- Check Before Engaging: Analyze moderation status before interacting with content
- Include Labels: Set
includeLabels: truefor complete moderation picture - Respect Safety Levels: Honor safety level indicators in your application
- Monitor Changes: Re-check moderation status periodically for active content
- Handle Blocked Content: Gracefully handle blocked or restricted content
- User Privacy: Don't expose detailed moderation state publicly
- Combine with Context: Use alongside other tools for complete content analysis
Subject Types
User (DID or Handle)
- Analyzes user account moderation status
- Returns profile-level labels and blocks/mutes
- Example:
did:plc:abc123oralice.bsky.social
Post (AT-URI)
- Analyzes individual post moderation status
- Returns post-level labels and author moderation state
- Example:
at://did:plc:abc123/app.bsky.feed.post/xyz1
Content Labels
Common label values:
porn: Adult sexual contentsexual: Sexually suggestive contentnudity: Nudity (artistic or otherwise)graphic-media: Graphic violence or disturbing imageryspam: Spam or misleading contentimpersonation: Impersonation of another user
Safety Levels
safe: No content warnings, safe for all audienceswarning: Has content warnings, user discretion advisedrestricted: Restricted content, may be hidden by defaultblocked: Blocked content, should not be displayed
Moderation State
Personal Moderation (requires authentication)
blocked: You have blocked this usermuted: You have muted this userblockedBy: This user has blocked youblocking: You are blocking this usermutedByList: Muted via a moderation listblockedByList: Blocked via a moderation list
Public Moderation
labels: Content labels applied by moderators or automated systemshasContentWarnings: Whether content has any warningsisNSFW: Whether content is marked as NSFWisSpam: Whether content is marked as spam
Use Cases
- Content Filtering: Filter content based on moderation status
- Safety Checks: Verify content safety before displaying
- User Verification: Check if users are blocked or muted
- Compliance: Ensure content meets community guidelines
- Moderation Tools: Build moderation interfaces
- Reporting: Identify content that may need reporting
Rate Limiting
This tool is subject to AT Protocol API rate limits:
- 3,000 requests per hour for authenticated users
- 300 requests per hour for unauthenticated users
Related Tools
- block_user - Block a user
- mute_user - Mute a user
- report_content - Report inappropriate content
- report_user - Report a user
- get_user_profile - Get user profile
- get_post_context - Get post context