| name | ai-universe-httpie |
| description | Use HTTPie to call AI Universe MCP server for multi-model analysis |
| type | usage |
| scope | project |
AI Universe HTTPie Usage Guide
This skill demonstrates how to use HTTPie to call the AI Universe MCP server directly for multi-model AI feedback.
Prerequisites
-
Install HTTPie:
brew install httpie
apt-get install httpie
pip install httpie
-
Authenticate:
node scripts/auth-cli.mjs login
Basic HTTPie Usage with MCP
Get Authentication Token
Prerequisite: Run node scripts/auth-cli.mjs login at least once so a valid token exists locally.
export TOKEN=$(node scripts/auth-cli.mjs token)
MCP Server Configuration
MCP_URL="https://ai-universe-backend-dev-114133832173.us-central1.run.app/mcp"
Example: Second Opinion Request
1. Simple Question
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
2. Design Review Request
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
)
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Accept:'application/json, text/event-stream' \
Authorization:"Bearer $TOKEN" \
--timeout=180 \
--print=b
3. Code Review Request
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
4. Bug Investigation Request
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
HTTPie Features for MCP Calls
1. Pretty Print Response
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN"
2. Download Response to File
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN" \
--download \
--output=response.json
3. Show Request Headers
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN" \
--print=HhBb
4. Follow Redirects
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN" \
--follow
5. Custom Timeout
echo "$REQUEST_JSON" | http POST "$MCP_URL" \
Authorization:"Bearer $TOKEN" \
--timeout=300
Parse Response with jq
Extract Primary Opinion
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'
Extract Synthesis
echo "$RESPONSE" | jq -r '.result.content[0].text' | jq -r '.synthesis.response'
Extract Cost Information
echo "$RESPONSE" | jq -r '.result.content[0].text' | jq '{
models: .summary.totalModels,
tokens: .summary.totalTokens,
cost: .summary.totalCost
}'
Rate Limit Status Check
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
Error Handling
Check for Errors in Response
if echo "$RESPONSE" | jq -e '.error' >/dev/null 2>&1; then
echo "Error:" $(echo "$RESPONSE" | jq -r '.error')
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
Integration with Scripts
Complete HTTPie Script Example
#!/bin/bash
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
QUESTION="$1"
if [ -z "$QUESTION" ]; then
echo "Usage: $0 'your question here'"
exit 1
fi
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)
echo "$RESPONSE" | jq -r '.result.content[0].text' | jq '.'
HTTPie vs curl
Why HTTPie is preferred:
- ✅ More readable syntax
- ✅ Automatic JSON formatting
- ✅ Pretty-printed output by default
- ✅ Better error messages
- ✅ Session support
- ✅ Easier header management
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
See Also