Skip to main content
Glama
test-connection.js2.77 kB
#!/usr/bin/env node import axios from 'axios'; import * as readline from 'readline'; const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); function question(query) { return new Promise(resolve => rl.question(query, resolve)); } async function testConnection() { console.log('\n🔍 Opus API Connection Test\n'); const apiKey = await question('Enter your Opus API Service Key: '); const workflowId = await question('Enter a Workflow ID to test (or press Enter to skip): '); if (!apiKey || apiKey.trim() === '') { console.error('❌ API key is required!'); process.exit(1); } const axiosInstance = axios.create({ baseURL: 'https://operator.opus.com', headers: { 'x-service-key': apiKey.trim(), 'Content-Type': 'application/json', }, }); console.log('\n⏳ Testing connection to Opus API...\n'); try { if (workflowId && workflowId.trim() !== '') { const response = await axiosInstance.get(`/workflow/${workflowId.trim()}`); console.log('✅ Connection successful!'); console.log(`\n📋 Workflow: ${response.data.name}`); console.log(`📝 Description: ${response.data.description}`); console.log(`🔄 Active: ${response.data.active}`); if (response.data.jobPayloadSchema) { const inputCount = Object.keys(response.data.jobPayloadSchema).length; console.log(`📥 Required Inputs: ${inputCount}`); console.log('\n🔑 Input Fields:'); for (const [key, value] of Object.entries(response.data.jobPayloadSchema)) { console.log(` - ${value.display_name} (${value.type})${value.is_nullable ? ' [optional]' : ' [required]'}`); } } } else { console.log('⚠️ No workflow ID provided. Skipping workflow test.'); console.log('✅ To test fully, run again with a valid workflow ID.'); } } catch (error) { if (error.response) { if (error.response.status === 404 && workflowId) { console.log('\n⚠️ Workflow not found, but authentication is valid!'); console.log('✅ API key is working correctly.'); } else if (error.response.status === 401 || error.response.status === 403) { console.error('\n❌ Authentication failed!'); console.error('Please check your API key.'); } else { console.error('\n❌ API Error:', error.response.status); console.error('Message:', error.response.data?.message || error.message); } } else { console.error('\n❌ Error:', error.message); } } console.log('\n✨ Test complete!\n'); rl.close(); } testConnection().catch(error => { console.error('❌ Test failed:', error.message); process.exit(1); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Moenamatics/Opus-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server