tryaii-mcp-server
Version:
TryAII MCP Server - 15+ AI models with comparison, cost tracking, and collective intelligence
69 lines • 2.1 kB
JavaScript
import mongoose, { Schema } from 'mongoose';
const ModelsSessionSchema = new Schema({
userId: { type: String, required: true, index: true },
apiKeyId: { type: String, required: true, index: true },
request: {
endpoint: {
type: String,
required: true,
enum: ['list_models', 'get_model_info']
},
provider: String,
modelId: String
},
response: {
modelsCount: Number,
modelInfo: {
id: String,
name: String,
provider: String,
pricing: mongoose.Schema.Types.Mixed,
capabilities: [String]
},
success: { type: Boolean, required: true },
errorMessage: String
},
clientMetadata: {
ipAddress: String,
userAgent: String,
requestId: String
},
// Override balanceUpdate for models (no cost)
balanceUpdate: {
attempted: { type: Boolean, default: true },
success: { type: Boolean, default: true },
note: { type: String, default: 'No balance deduction for models endpoint' }
},
totalCost: {
type: Number,
required: true,
min: 0,
default: 0,
get: (v) => parseFloat(v.toFixed(6))
},
duration: {
type: Number,
required: true,
min: 0
},
status: {
type: String,
enum: ['processing', 'success', 'error'],
required: true,
default: 'processing'
}
}, {
timestamps: true,
versionKey: false
});
// Add indexes
ModelsSessionSchema.index({ userId: 1, createdAt: -1 });
ModelsSessionSchema.index({ apiKeyId: 1, createdAt: -1 });
ModelsSessionSchema.index({ totalCost: 1, createdAt: -1 });
ModelsSessionSchema.index({ status: 1 });
ModelsSessionSchema.index({ 'request.endpoint': 1, createdAt: -1 });
ModelsSessionSchema.index({ 'request.provider': 1, createdAt: -1 });
export function createModelsSessionModel(connection) {
return connection.model('MCP_ModelsSession', ModelsSessionSchema);
}
//# sourceMappingURL=ModelsSession.js.map