From claude-commands
Uses HTTPie to call the AI Universe MCP server for multi-model AI analysis, including second opinions, design reviews, code reviews, and bug investigations.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-commands:ai-universe-httpieThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill demonstrates how to use HTTPie to call the AI Universe MCP server directly for multi-model AI feedback.
This skill demonstrates how to use HTTPie to call the AI Universe MCP server directly for multi-model AI feedback.
Install HTTPie:
# macOS
brew install httpie
# Ubuntu/Debian
apt-get install httpie
# Python (universal)
pip install httpie
Authenticate:
node scripts/auth-cli.mjs login
Prerequisite: Run
node scripts/auth-cli.mjs loginat least once so a valid token exists locally.
# Export token for reuse
export TOKEN=$(node scripts/auth-cli.mjs token)
MCP_URL="https://ai-universe-backend-dev-114133832173.us-central1.run.app/mcp"
echo '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "agent.second_opinion",
"arguments": {
"question": "Should I use Redis or in-memory caching for rate limiting?"
}
},
"id": 1
}' | http POST "$MCP_URL" \
Accept:'application/json, text/event-stream' \
Authorization:"Bearer $TOKEN" \
--timeout=180
# Create request JSON
REQUEST_JSON=$(cat <<'EOF'
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "agent.second_opinion",
"arguments": {
"question": "Design Review: Authentication system using Firebase\n\nAnalyze the architectural decisions:\n- Is OAuth flow appropriate?\n- Are there better alternatives?\n- What are potential security issues?\n- Industry best practices comparison?"
}
},
"id": 1
}
EOF
)
# Send request with HTTPie
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Accept:'application/json, text/event-stream' \
Authorization:"Bearer $TOKEN" \
--timeout=180 \
--print=b
QUESTION="Code Review: Review this authentication flow for:
- Security vulnerabilities
- Token handling best practices
- Error handling gaps
- Rate limiting implementation
- Session management"
echo "{
\"jsonrpc\": \"2.0\",
\"method\": \"tools/call\",
\"params\": {
\"name\": \"agent.second_opinion\",
\"arguments\": {
\"question\": $(echo "$QUESTION" | jq -Rs .)
}
},
\"id\": 1
}" | http POST "$MCP_URL" \
Accept:'application/json, text/event-stream' \
Authorization:"Bearer $TOKEN" \
--timeout=180
http POST "$MCP_URL" \
Accept:'application/json, text/event-stream' \
Authorization:"Bearer $TOKEN" \
jsonrpc=2.0 \
method=tools/call \
params:='{
"name": "agent.second_opinion",
"arguments": {
"question": "Bug Investigation: Investigate potential issues:\n- Race conditions in async operations\n- Memory leaks in long-running processes\n- Edge cases in error handling\n- Type safety concerns"
}
}' \
id:=1
# Default behavior - pretty JSON output
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN"
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN" \
--download \
--output=response.json
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN" \
--print=HhBb # H=request headers, h=response headers, B=request body, b=response body
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN" \
--follow
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN" \
--timeout=300 # 5 minutes
RESPONSE=$(echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN" \
--print=b)
echo "$RESPONSE" | jq -r '.result.content[0].text' | jq -r '.primary.response'
echo "$RESPONSE" | jq -r '.result.content[0].text' | jq -r '.synthesis.response'
echo "$RESPONSE" | jq -r '.result.content[0].text' | jq '{
models: .summary.totalModels,
tokens: .summary.totalTokens,
cost: .summary.totalCost
}'
# Get current rate limit status
USER_ID=$(node scripts/auth-cli.mjs status | awk '/UID:/ {print $2}')
if [ -z "$USER_ID" ]; then
echo "❌ Unable to determine user ID. Run: node scripts/auth-cli.mjs login"
else
jq -n --arg user_id "$USER_ID" '{
jsonrpc: "2.0",
method: "tools/call",
params: {
name: "rate-limit.status",
arguments: {
userId: $user_id
}
},
id: 1
}' | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN"
fi
if echo "$RESPONSE" | jq -e '.error' >/dev/null 2>&1; then
echo "Error:" $(echo "$RESPONSE" | jq -r '.error')
# Check for rate limit
if echo "$RESPONSE" | jq -e '.details.resetTime' >/dev/null 2>&1; then
echo "Rate limited. Reset at:" $(echo "$RESPONSE" | jq -r '.details.resetTime')
fi
fi
#!/bin/bash
# Get token
TOKEN=$(node scripts/auth-cli.mjs token 2>/dev/null)
if [ $? -ne 0 ]; then
echo "❌ Not authenticated. Run: node scripts/auth-cli.mjs login"
exit 1
fi
# Construct question
QUESTION="$1"
if [ -z "$QUESTION" ]; then
echo "Usage: $0 'your question here'"
exit 1
fi
# Send request
RESPONSE=$(echo "{
\"jsonrpc\": \"2.0\",
\"method\": \"tools/call\",
\"params\": {
\"name\": \"agent.second_opinion\",
\"arguments\": {
\"question\": $(echo "$QUESTION" | jq -Rs .)
}
},
\"id\": 1
}" | http POST "https://ai-universe-backend-dev-114133832173.us-central1.run.app/mcp" \
Accept:'application/json, text/event-stream' \
Authorization:"Bearer $TOKEN" \
--timeout=180 \
--print=b)
# Parse and display
echo "$RESPONSE" | jq -r '.result.content[0].text' | jq '.'
Why HTTPie is preferred:
HTTPie Example:
http POST $URL Authorization:"Bearer $TOKEN" < request.json
curl Equivalent:
curl -X POST "$URL" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d @request.json
~/.claude/scripts/secondo-cli.sh - Implementation referencenpx claudepluginhub jleechanorg/claude-commands --plugin claude-commandsGuides developers through gathering multi-model AI analysis (Cerebras, Gemini, Perplexity, GPT-4o) using the /secondo command. Includes authentication and MCP request workflows.
Handles Claude Code MCP integration: installs/manages servers (HTTP/SSE/stdio), scopes, enterprise configs, OAuth auth, resources/@mentions, prompts, limits, security; delegates to docs-management.
Consults Gemini 2.5 Pro, OpenAI Codex, and Claude for second opinions on debugging failures, architectural decisions, security validation, and fresh perspectives.