Goal
Reject a draft post with specific feedback, sending it back for revision. Reviewer agents use this to enforce brand standards and strategic fit.
Which Agents Use This
- reviewer — Enforce voice profile compliance, brand guidelines, and content strategy
- custom — Any agent with review permissions
- Requires Editor or Admin role
Hard Rules
- MUST provide specific reason (not "needs improvement")
- MUST provide actionable suggestions (WHAT to fix, not just WHY it's wrong)
- MUST cite voice profile when applicable
- SHOULD be constructive, not just critical
- Severity levels help creators prioritize fixes
Steps
1. Validate permissions
- Verify user/agent has Editor or Admin role
- Verify draft_id exists and is in reviewable state
2. Validate feedback quality
- Verify reason is specific (not vague)
- Verify suggestions are actionable
- If voice profile violation: cite specific rule
3. Reject post
- Update post status: Draft → Rejected
- Record rejector (agent_id or user_id)
- Add rejection reason and suggestions as comment
- Set severity level
- Timestamp rejection
4. Return confirmation
- Return post_id, new status, confirmation message
Output
{
"success": true,
"post_id": "uuid",
"status": "Rejected",
"message": "Post rejected. Feedback provided."
}
Failure Handling
- If not Editor/Admin role: return error "Permission denied - Editor role required"
- If draft_id not found: return error "Draft not found"
- If reason/suggestions empty: return error "Specific feedback required"
Example Usage
Scenario 1: Voice profile violation
{
"draft_id": "uuid",
"reason": "Uses 'leverage' which is forbidden in voice profile (avoid corporate jargon)",
"suggestions": "Replace 'leverage our platform' with 'use our platform' or 'build with our tools'",
"severity": "major"
}
Result: Post rejected with specific fix
Scenario 2: Repetitive content
{
"draft_id": "uuid",
"reason": "Posted about pricing yesterday - too repetitive",
"suggestions": "Try educational content instead (how-to, case study, best practices). Refer to content calendar.",
"severity": "minor"
}
Result: Post rejected with strategic guidance
1---2name: bolta-reject-post3version: 2.0.04description: Reject a draft post with specific feedback, sending it back for revision to enforce brand standards5category: review6roles_allowed: [Editor, Admin]7required_scopes: [review:approve]8agent_types: [reviewer, custom]9safe_defaults:10 require_specific_feedback: true11tools_required:12 - bolta.update_post13 - bolta.add_comment14inputs_schema:15 type: object16 required: [draft_id, reason, suggestions]17 properties:18 draft_id: { type: string, description: "Draft post UUID to reject" }19 reason: { type: string, description: "WHY rejected (specific)" }20 suggestions: { type: string, description: "WHAT to fix (actionable)" }21 severity: { type: string, enum: [minor, major, blocking], default: major }22outputs_schema:23 type: object24 properties:25 success: { type: boolean }26 post_id: { type: string }27 status: { type: string, enum: [Rejected] }28 message: { type: string }29organization: bolta.ai30author: Bolta Team31---3233## Goal34Reject a draft post with specific feedback, sending it back for revision. Reviewer agents use this to enforce brand standards and strategic fit.3536## Which Agents Use This37- **reviewer** — Enforce voice profile compliance, brand guidelines, and content strategy38- **custom** — Any agent with review permissions39- Requires Editor or Admin role4041## Hard Rules421. MUST provide specific reason (not "needs improvement")432. MUST provide actionable suggestions (WHAT to fix, not just WHY it's wrong)443. MUST cite voice profile when applicable454. SHOULD be constructive, not just critical465. Severity levels help creators prioritize fixes4748## Steps4950### 1. Validate permissions51- Verify user/agent has Editor or Admin role52- Verify draft_id exists and is in reviewable state5354### 2. Validate feedback quality55- Verify reason is specific (not vague)56- Verify suggestions are actionable57- If voice profile violation: cite specific rule5859### 3. Reject post60- Update post status: Draft → Rejected61- Record rejector (agent_id or user_id)62- Add rejection reason and suggestions as comment63- Set severity level64- Timestamp rejection6566### 4. Return confirmation67- Return post_id, new status, confirmation message6869## Output70```json71{72 "success": true,73 "post_id": "uuid",74 "status": "Rejected",75 "message": "Post rejected. Feedback provided."76}77```7879## Failure Handling80- If not Editor/Admin role: return error "Permission denied - Editor role required"81- If draft_id not found: return error "Draft not found"82- If reason/suggestions empty: return error "Specific feedback required"8384## Example Usage8586### Scenario 1: Voice profile violation87```json88{89 "draft_id": "uuid",90 "reason": "Uses 'leverage' which is forbidden in voice profile (avoid corporate jargon)",91 "suggestions": "Replace 'leverage our platform' with 'use our platform' or 'build with our tools'",92 "severity": "major"93}94```95**Result:** Post rejected with specific fix9697### Scenario 2: Repetitive content98```json99{100 "draft_id": "uuid",101 "reason": "Posted about pricing yesterday - too repetitive",102 "suggestions": "Try educational content instead (how-to, case study, best practices). Refer to content calendar.",103 "severity": "minor"104}105```106**Result:** Post rejected with strategic guidance