curl --request POST \
--url https://mcp.echozero.app/api/admin/developer-agents/{id}/reject \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"notes": "Strategy disclosure incomplete; resubmit with methodology section."
}
'{
"success": true,
"data": {
"id": "<string>",
"developerId": "<string>",
"name": "<string>",
"betaStatus": "<string>",
"performanceStats": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"strategyDescription": "<string>",
"avatarUrl": "<string>",
"tags": [
"<string>"
],
"monthlyPrice": 123,
"successFeePercent": 123,
"betaStartDate": "2023-11-07T05:31:56Z",
"maxBetaUsers": 123,
"webhookUrl": "<string>",
"inboundSignalsHttpUrl": "<string>",
"inboundWebhookSigningSecretReveal": "<string>",
"connectedChannels": [
{
"channelId": "<string>",
"channelUsername": "<string>",
"channelName": "<string>",
"channelIconUrl": "<string>",
"memberCount": 123,
"inviteUrl": "<string>",
"verifiedAt": "2023-11-07T05:31:56Z",
"linkedChatInput": "<string>",
"lastVerificationError": "<string>",
"lastVerificationErrorCode": "<string>"
}
],
"signalDetectionRule": {
"buyKeywords": [
"<string>"
],
"sellKeywords": [
"<string>"
],
"longKeywords": [
"<string>"
],
"shortKeywords": [
"<string>"
],
"tpKeywords": [
"<string>"
],
"slKeywords": [
"<string>"
],
"leverageKeywords": [
"<string>"
],
"tokenPatterns": [
"<string>"
],
"strategyPrefix": "<string>",
"cancelKeywords": [
"<string>"
],
"breakevenKeywords": [
"<string>"
],
"partialCloseKeywords": [
"<string>"
],
"breakoutAboveKeywords": [
"<string>"
],
"breakoutBelowKeywords": [
"<string>"
],
"entryZoneKeywords": [
"<string>"
]
},
"signalExecutionDefaults": {
"leverageMax": 63,
"tradeSizeValue": 123,
"stopLossMode": "<string>",
"stopLossValue": 123,
"stopLossAboveEntry": true,
"takeProfitMode": "<string>",
"takeProfitValue": 123,
"takeProfitTiers": [
{
"closePercent": 123,
"whenPositionPercent": 123
}
],
"signalOverridesDefaults": true,
"maxPositionMode": "<string>",
"maxPositionPct": 123,
"maxOpenPositions": 123,
"maxDailyLossMode": "<string>",
"maxDailyLossPct": 123,
"cooldownSeconds": 123,
"maxTradesPerDay": 123,
"trailingStop": true,
"slippageMode": "<string>",
"slippageTolerance": 123,
"tokenWhitelist": [
"<string>"
],
"tokenBlacklist": [
"<string>"
]
},
"membershipGated": true,
"externalSignupUrl": "<string>"
}
}Admin
Reject developer agent
Transitions agent from pending-review to rejected. Requires rejection notes.
POST
/
api
/
admin
/
developer-agents
/
{id}
/
reject
curl --request POST \
--url https://mcp.echozero.app/api/admin/developer-agents/{id}/reject \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"notes": "Strategy disclosure incomplete; resubmit with methodology section."
}
'{
"success": true,
"data": {
"id": "<string>",
"developerId": "<string>",
"name": "<string>",
"betaStatus": "<string>",
"performanceStats": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"strategyDescription": "<string>",
"avatarUrl": "<string>",
"tags": [
"<string>"
],
"monthlyPrice": 123,
"successFeePercent": 123,
"betaStartDate": "2023-11-07T05:31:56Z",
"maxBetaUsers": 123,
"webhookUrl": "<string>",
"inboundSignalsHttpUrl": "<string>",
"inboundWebhookSigningSecretReveal": "<string>",
"connectedChannels": [
{
"channelId": "<string>",
"channelUsername": "<string>",
"channelName": "<string>",
"channelIconUrl": "<string>",
"memberCount": 123,
"inviteUrl": "<string>",
"verifiedAt": "2023-11-07T05:31:56Z",
"linkedChatInput": "<string>",
"lastVerificationError": "<string>",
"lastVerificationErrorCode": "<string>"
}
],
"signalDetectionRule": {
"buyKeywords": [
"<string>"
],
"sellKeywords": [
"<string>"
],
"longKeywords": [
"<string>"
],
"shortKeywords": [
"<string>"
],
"tpKeywords": [
"<string>"
],
"slKeywords": [
"<string>"
],
"leverageKeywords": [
"<string>"
],
"tokenPatterns": [
"<string>"
],
"strategyPrefix": "<string>",
"cancelKeywords": [
"<string>"
],
"breakevenKeywords": [
"<string>"
],
"partialCloseKeywords": [
"<string>"
],
"breakoutAboveKeywords": [
"<string>"
],
"breakoutBelowKeywords": [
"<string>"
],
"entryZoneKeywords": [
"<string>"
]
},
"signalExecutionDefaults": {
"leverageMax": 63,
"tradeSizeValue": 123,
"stopLossMode": "<string>",
"stopLossValue": 123,
"stopLossAboveEntry": true,
"takeProfitMode": "<string>",
"takeProfitValue": 123,
"takeProfitTiers": [
{
"closePercent": 123,
"whenPositionPercent": 123
}
],
"signalOverridesDefaults": true,
"maxPositionMode": "<string>",
"maxPositionPct": 123,
"maxOpenPositions": 123,
"maxDailyLossMode": "<string>",
"maxDailyLossPct": 123,
"cooldownSeconds": 123,
"maxTradesPerDay": 123,
"trailingStop": true,
"slippageMode": "<string>",
"slippageTolerance": 123,
"tokenWhitelist": [
"<string>"
],
"tokenBlacklist": [
"<string>"
]
},
"membershipGated": true,
"externalSignupUrl": "<string>"
}
}Authorizations
bearer-jwtapi-key
User JWT access token issued by POST /api/auth/verify or POST /api/auth/social/verify. Routes that accept both auth modes declare api-key and bearer-jwt security schemes.
Headers
HMAC-SHA256 signature: HMAC-SHA256(secretKey, timestamp + METHOD + path + body). Optional -- when omitted, HMAC verification is skipped.
Request timestamp in epoch milliseconds. Required when x-signature is provided. Rejected if drift exceeds 5 minutes.
Path Parameters
⌘I