Publishing to the Store
Turn your agents into store listings and start earning.
Prerequisites
Before publishing:
- Be a vendor: Complete the vendor program application
- Have an agent: Build and test your agent thoroughly
- Prepare assets: Screenshots, documentation, and description
Creating a Listing
From an Existing Agent
const listing = await client.store.createListing({
// Source agent
agentId: 'agent-123',
// Basic info
name: 'Customer Support Pro',
shortDescription: 'AI-powered customer support that handles 80% of tickets automatically.',
tagline: 'Support that scales with you',
// Classification
category: 'support', // assistant, support, coding, writing, analysis, automation, integration
tags: ['customer-support', 'helpdesk', 'automation', 'chatbot'],
// Pricing
pricing: {
model: 'subscription',
monthlyPrice: 2999, // €29.99/month in cents
yearlyPrice: 29900, // €299/year (2 months free)
currency: 'EUR'
},
// License
license: 'proprietary', // proprietary, mit, apache2, gpl3, custom
// Content
documentation: `
# Customer Support Pro
## Quick Start
1. Install the agent
2. Configure your knowledge base
3. Connect to your helpdesk
## Features
- Automatic ticket classification
- Smart response suggestions
- Escalation rules
- Analytics dashboard
## Configuration
...
`,
// Media
screenshots: [
'https://cdn.example.com/screenshot1.png',
'https://cdn.example.com/screenshot2.png'
],
// Support
supportUrl: 'https://support.example.com',
demoUrl: 'https://demo.example.com'
});
// Status: draft
console.log(listing.id);
From a Template
// Get your publishable templates
const templates = await client.store.vendor.getTemplates();
// Publish template to store
const listing = await client.store.publishTemplate('template-123', {
name: 'Customer Support Pro',
shortDescription: 'AI-powered customer support.',
category: 'support',
tags: ['support', 'helpdesk'],
pricing: {
model: 'free'
}
});
Pricing Models
Free
pricing: {
model: 'free'
}
Best for:
- Building reputation
- Open-source tools
- Community contributions
One-Time Purchase
pricing: {
model: 'one_time',
price: 4999, // €49.99
currency: 'EUR'
}
Best for:
- Simple tools
- Utilities
- No ongoing updates
Pricing range: €10 - €9,999
Subscription
pricing: {
model: 'subscription',
monthlyPrice: 999, // €9.99/month
yearlyPrice: 9900, // €99/year
currency: 'EUR'
}
Best for:
- Agents requiring updates
- Support-heavy products
- Recurring value
Monthly range: €5 - €999 Yearly range: €50 - €9,999
Freemium
pricing: {
model: 'freemium',
currency: 'EUR',
freeTier: {
name: 'Basic',
features: [
'5 conversations/day',
'Email support'
],
limitations: [
'No file uploads',
'No integrations'
]
},
paidTiers: [
{
id: 'pro',
name: 'Pro',
price: 1999, // €19.99
billingPeriod: 'monthly',
features: [
'Unlimited conversations',
'File uploads',
'All integrations',
'Priority support'
]
},
{
id: 'enterprise',
name: 'Enterprise',
price: 9999, // €99.99
billingPeriod: 'monthly',
features: [
'Everything in Pro',
'Custom model',
'Dedicated support',
'SLA guarantee'
]
}
]
}
Best for:
- Try-before-buy
- Upselling opportunities
- Wide audience reach
Listing Content
Writing Effective Descriptions
Short Description (200 chars max)
shortDescription: 'AI-powered customer support that handles 80% of tickets automatically. Reduce response time and improve customer satisfaction.'
Tips:
- Lead with the main benefit
- Include a metric if possible
- Be specific, not generic
Tagline (120 chars max)
tagline: 'Support that scales with you'
Tips:
- Catchy and memorable
- Convey value proposition
- Avoid buzzwords
Full Description
Use markdown for formatting:
# Customer Support Pro
Automate your customer support without losing the human touch.
## Key Features
- **Automatic Classification**: Tickets are instantly categorized
- **Smart Responses**: AI suggests responses based on your knowledge base
- **Seamless Escalation**: Complex issues go to the right human
- **Real-time Analytics**: Track performance metrics
## How It Works
1. Connect your helpdesk (Zendesk, Freshdesk, Intercom)
2. Import your knowledge base
3. Configure response rules
4. Go live
## Results
Companies using Customer Support Pro see:
- 80% reduction in first response time
- 60% of tickets resolved automatically
- 35% improvement in customer satisfaction
## Support
- Documentation: [docs.example.com](https://docs.example.com)
- Email: support@example.com
- Response time: < 24 hours
Screenshots
Include 2-6 screenshots showing:
- Main interface
- Key features in action
- Configuration screens
- Results/analytics
Specifications:
- Format: PNG or JPG
- Size: 1200x800 recommended
- Max file size: 2MB each
screenshots: [
'https://cdn.example.com/main-interface.png',
'https://cdn.example.com/ticket-classification.png',
'https://cdn.example.com/analytics-dashboard.png',
'https://cdn.example.com/configuration.png'
]
Documentation
Comprehensive documentation increases sales:
# Getting Started
## Prerequisites
- Deeployd Pro plan or higher
- Zendesk, Freshdesk, or Intercom account
## Installation
1. Click "Install" on the store listing
2. Authorize the integration
3. Select your helpdesk
## Configuration
### Knowledge Base
Upload your FAQ articles:
\`\`\`typescript
// Example configuration
{
knowledgeBase: {
source: 'zendesk',
articlesFolder: '/faq'
}
}
\`\`\`
### Response Rules
Configure automatic responses:
...
## Troubleshooting
### Common Issues
**Agent not responding**
- Check integration status
- Verify API keys
**Slow responses**
- Review knowledge base size
- Check rate limits
Submitting for Review
Update Listing
Before submitting, ensure all fields are complete:
await client.store.updateListing('listing-123', {
// Add any missing info
documentation: updatedDocs,
screenshots: additionalScreenshots
});
Submit
const result = await client.store.submitForReview('listing-123');
console.log({
status: result.status, // pending_review
submittedAt: result.submittedAt
});
Review Process
AI-Powered Quality Check
Your listing is automatically scanned for:
Safety Analysis
- Jailbreak detection
- Prompt injection risks
- Harmful instructions
- Malicious patterns
Tool Permission Analysis
- Dangerous tool combinations
- Data exfiltration risks
- Excessive permissions
Content Quality
- Description completeness (0-100 score)
- Documentation quality (0-100 score)
- Screenshot validation
- Spam detection
- Duplicate detection
Pricing Validation
- Within allowed ranges
- Consistent with similar products
- No predatory pricing
Scoring
| Score | Outcome |
|---|---|
| 85+ | Auto-approved |
| 60-84 | Human review required |
| 30-59 | Changes requested |
| Below 30 | Auto-rejected |
Human Review
If required, a human reviewer evaluates:
- Does it work as described?
- Is it useful to customers?
- Is it unique in the store?
- Is it professionally presented?
- Is it enterprise-ready?
Review Status
const listing = await client.store.get('listing-123');
console.log({
status: listing.status,
// draft, pending_review, published, rejected, archived
// If rejected
rejectionReason: listing.rejectionReason
});
View Review Details
const review = await client.store.getReview('listing-123');
console.log({
// AI Review
aiScore: review.aiReview?.overallScore,
safetyScore: review.aiReview?.safety.score,
contentScore: review.aiReview?.contentQuality.score,
flags: review.aiReview?.flags,
suggestions: review.aiReview?.suggestions,
// Human Review (if applicable)
humanReview: review.humanReview,
// Final Decision
decision: review.finalDecision,
reason: review.decisionReason
});
Managing Published Listings
Update Listing
await client.store.updateListing('listing-123', {
shortDescription: 'Updated description',
documentation: 'Updated docs',
screenshots: ['new-screenshot.png']
});
Release New Version
await client.store.createVersion('listing-123', {
version: '1.1.0',
changelog: `
## Version 1.1.0
### New Features
- Added Freshdesk integration
- Multi-language support
### Bug Fixes
- Fixed response delay issue
- Improved ticket classification
`
});
View Listing Analytics
const analytics = await client.store.getListingAnalytics('listing-123');
console.log({
views: analytics.views,
installs: analytics.installs,
purchases: analytics.purchases,
revenue: analytics.revenue,
rating: analytics.rating,
reviews: analytics.reviewCount,
conversionRate: `${(analytics.installs / analytics.views * 100).toFixed(1)}%`
});
Respond to Reviews
// Get reviews
const reviews = await client.store.getReviews('listing-123');
// Respond to a review
await client.store.respondToReview('review-123', {
content: 'Thank you for your feedback! We\'ve addressed this in version 1.1.0.'
});
Archive Listing
// Remove from store but keep data
await client.store.archiveListing('listing-123');
// Existing customers keep access
// No new purchases allowed
Best Practices
Before Publishing
- Test thoroughly: Use your agent extensively before publishing
- Write comprehensive docs: Answer common questions proactively
- Prepare support: Set up processes to handle customer questions
- Price research: Check similar products in the store
After Publishing
- Monitor reviews: Respond promptly and professionally
- Update regularly: Fix bugs and add features
- Track analytics: Understand what drives conversions
- Support customers: Good support leads to good reviews
Pricing Strategy
| Strategy | When to Use |
|---|---|
| Free | Building reputation, open source |
| Low price | High volume, simple tools |
| Premium | Unique value, enterprise features |
| Freemium | Converting free users to paid |
Common Mistakes
- Vague descriptions: Be specific about what the agent does
- No screenshots: Visual proof increases trust
- Missing docs: Customers need to know how to use it
- Overpricing: Research market rates first
- Ignoring reviews: Respond to all feedback
Next: Explore SDK & CLI for programmatic access to all features.