Skip to main content
Glama

USPTO Final Petition Decisions MCP Server

by john-walkoe
Validation-Helpers.sh5.47 kB
#!/bin/bash # API Key Validation Helpers for Linux/macOS # # Validates USPTO and Mistral API key formats before storage # Prevents typos and malformed keys from being stored # Color codes for output GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Validate USPTO API key format # Expected: Exactly 30 lowercase letters validate_uspto_api_key() { local api_key="$1" local expected_length=30 # Check if empty if [[ -z "$api_key" ]]; then echo -e "${RED}ERROR: USPTO API key cannot be empty${NC}" >&2 return 1 fi # Check exact length if [[ ${#api_key} -ne $expected_length ]]; then echo -e "${RED}ERROR: USPTO API key must be exactly $expected_length characters${NC}" >&2 echo -e "${RED} Got ${#api_key} characters${NC}" >&2 return 1 fi # Check character set (lowercase letters only) if ! [[ "$api_key" =~ ^[a-z]+$ ]]; then echo -e "${RED}ERROR: USPTO API key must contain only lowercase letters (a-z)${NC}" >&2 echo -e "${YELLOW} Expected format: 30 lowercase letters${NC}" >&2 # Show which characters are invalid invalid_chars=$(echo "$api_key" | grep -o '[^a-z]' | sort -u | tr -d '\n') if [[ -n "$invalid_chars" ]]; then echo -e "${YELLOW} Invalid characters found: '$invalid_chars'${NC}" >&2 fi return 1 fi echo -e "${GREEN}✓ USPTO API key format valid (30 lowercase letters)${NC}" return 0 } # Validate Mistral API key format # Expected: Exactly 32 alphanumeric characters (upper and lowercase letters, numbers) validate_mistral_api_key() { local api_key="$1" local expected_length=32 # Allow empty (optional key) if [[ -z "$api_key" ]]; then echo -e "${YELLOW}ℹ Mistral API key not provided (optional - OCR disabled)${NC}" return 0 fi # Check exact length if [[ ${#api_key} -ne $expected_length ]]; then echo -e "${RED}ERROR: Mistral API key must be exactly $expected_length characters${NC}" >&2 echo -e "${RED} Got ${#api_key} characters${NC}" >&2 return 1 fi # Check alphanumeric (uppercase, lowercase, numbers) if ! [[ "$api_key" =~ ^[A-Za-z0-9]+$ ]]; then echo -e "${RED}ERROR: Mistral API key must contain only letters and numbers${NC}" >&2 echo -e "${YELLOW} Expected format: 32 alphanumeric characters (A-Z, a-z, 0-9)${NC}" >&2 # Show which characters are invalid invalid_chars=$(echo "$api_key" | grep -o '[^A-Za-z0-9]' | sort -u | tr -d '\n') if [[ -n "$invalid_chars" ]]; then echo -e "${YELLOW} Invalid characters found: '$invalid_chars'${NC}" >&2 fi return 1 fi echo -e "${GREEN}✓ Mistral API key format valid (32 alphanumeric characters)${NC}" return 0 } # Test function (run with: bash Validation-Helpers.sh test) if [[ "${BASH_SOURCE[0]}" == "${0}" ]] && [[ "$1" == "test" ]]; then echo "Testing API Key Validation..." echo "" echo "=== USPTO API Key Tests ===" # Test valid USPTO key echo "Test 1: Valid USPTO key (30 lowercase letters)" if validate_uspto_api_key "abcdefghijklmnopqrstuvwxyzabcd"; then echo -e "${GREEN}✓ PASSED${NC}" else echo -e "${RED}✗ FAILED${NC}" fi echo "" # Test too short echo "Test 2: Too short USPTO key" if ! validate_uspto_api_key "short"; then echo -e "${GREEN}✓ PASSED (correctly rejected)${NC}" else echo -e "${RED}✗ FAILED (should have been rejected)${NC}" fi echo "" # Test uppercase echo "Test 3: USPTO key with uppercase letters" if ! validate_uspto_api_key "ABCDEFGHIJKLMNOPQRSTUVWXYZABCD"; then echo -e "${GREEN}✓ PASSED (correctly rejected)${NC}" else echo -e "${RED}✗ FAILED (should have been rejected)${NC}" fi echo "" # Test with numbers echo "Test 4: USPTO key with numbers" if ! validate_uspto_api_key "abcdefghijklmnopqrstuvwxyz1234"; then echo -e "${GREEN}✓ PASSED (correctly rejected)${NC}" else echo -e "${RED}✗ FAILED (should have been rejected)${NC}" fi echo "" echo "=== Mistral API Key Tests ===" # Test valid Mistral key echo "Test 5: Valid Mistral key (32 alphanumeric)" if validate_mistral_api_key "aBcDeF1234567890ghIjKlMnOpQr5678"; then echo -e "${GREEN}✓ PASSED${NC}" else echo -e "${RED}✗ FAILED${NC}" fi echo "" # Test empty (should pass - optional) echo "Test 6: Empty Mistral key (optional)" if validate_mistral_api_key ""; then echo -e "${GREEN}✓ PASSED (optional key)${NC}" else echo -e "${RED}✗ FAILED${NC}" fi echo "" # Test too long echo "Test 7: Too long Mistral key" if ! validate_mistral_api_key "aBcDeF1234567890ghIjKlMnOpQr5678EXTRA"; then echo -e "${GREEN}✓ PASSED (correctly rejected)${NC}" else echo -e "${RED}✗ FAILED (should have been rejected)${NC}" fi echo "" # Test with special characters echo "Test 8: Mistral key with special characters" if ! validate_mistral_api_key "aBcDeF123456-890ghIjKlMnOpQr5678"; then echo -e "${GREEN}✓ PASSED (correctly rejected)${NC}" else echo -e "${RED}✗ FAILED (should have been rejected)${NC}" fi echo "" echo "=== All Tests Complete ===" fi

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/john-walkoe/uspto_fpd_mcp'

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