=== NEW SERVERS ADDED (7) === - servers/closebot — 119 tools, 14 modules, 4,656 lines TS (Stage 7) - servers/google-console — Google Search Console MCP (Stage 7) - servers/meta-ads — Meta/Facebook Ads MCP (Stage 8) - servers/twilio — Twilio communications MCP (Stage 8) - servers/competitor-research — Competitive intel MCP (Stage 6) - servers/n8n-apps — n8n workflow MCP apps (Stage 6) - servers/reonomy — Commercial real estate MCP (Stage 1) === FACTORY INFRASTRUCTURE ADDED === - infra/factory-tools — mcp-jest, mcp-validator, mcp-add, MCP Inspector - 60 test configs, 702 auto-generated test cases - All 30 servers score 100/100 protocol compliance - infra/command-center — Pipeline state, operator playbook, dashboard config - infra/factory-reviews — Automated eval reports === DOCS ADDED === - docs/MCP-FACTORY.md — Factory overview - docs/reports/ — 5 pipeline evaluation reports - docs/research/ — Browser MCP research === RULES ESTABLISHED === - CONTRIBUTING.md — All MCP work MUST go in this repo - README.md — Full inventory of 37 servers + infra docs - .gitignore — Updated for Python venvs TOTAL: 37 MCP servers + full factory pipeline in one repo. This is now the single source of truth for all MCP work.
358 lines
10 KiB
JSON
358 lines
10 KiB
JSON
{
|
|
"server": {
|
|
"command": "node",
|
|
"args": [
|
|
"/Users/jakeshore/.clawdbot/workspace/mcp-diagrams/mcp-servers/freshbooks/dist/index.js"
|
|
],
|
|
"env": {
|
|
"FRESHBOOKS_ACCESS_TOKEN": "factory_discovery_dummy",
|
|
"FRESHBOOKS_ACCOUNT_ID": "factory_discovery_dummy"
|
|
}
|
|
},
|
|
"tests": {
|
|
"tools": {
|
|
"list_invoices": {
|
|
"args": {
|
|
"page": 50,
|
|
"per_page": 50,
|
|
"status": "draft"
|
|
},
|
|
"expect": "content && content.length > 0"
|
|
},
|
|
"list_invoices:empty-status": {
|
|
"args": {
|
|
"page": 50,
|
|
"per_page": 50,
|
|
"status": ""
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"get_invoice": {
|
|
"args": {
|
|
"invoice_id": "test-id-123"
|
|
},
|
|
"expect": "content && content.length > 0"
|
|
},
|
|
"create_invoice": {
|
|
"args": {
|
|
"customer_id": 50,
|
|
"create_date": "test_value",
|
|
"due_offset_days": 50,
|
|
"currency_code": "javascript",
|
|
"notes": "test_value",
|
|
"terms": "test_value",
|
|
"lines": []
|
|
},
|
|
"expect": "content && content.length > 0"
|
|
},
|
|
"create_invoice:empty-currency_code": {
|
|
"args": {
|
|
"customer_id": 50,
|
|
"create_date": "test_value",
|
|
"due_offset_days": 50,
|
|
"currency_code": "",
|
|
"notes": "test_value",
|
|
"terms": "test_value",
|
|
"lines": []
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_invoice:empty-notes": {
|
|
"args": {
|
|
"customer_id": 50,
|
|
"create_date": "test_value",
|
|
"due_offset_days": 50,
|
|
"currency_code": "javascript",
|
|
"notes": "",
|
|
"terms": "test_value",
|
|
"lines": []
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_invoice:empty-terms": {
|
|
"args": {
|
|
"customer_id": 50,
|
|
"create_date": "test_value",
|
|
"due_offset_days": 50,
|
|
"currency_code": "javascript",
|
|
"notes": "test_value",
|
|
"terms": "",
|
|
"lines": []
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"send_invoice": {
|
|
"args": {
|
|
"invoice_id": "test-id-123",
|
|
"email_recipients": [],
|
|
"email_subject": "test@example.com",
|
|
"email_body": "test@example.com"
|
|
},
|
|
"expect": "content && content.length > 0"
|
|
},
|
|
"send_invoice:empty-email_subject": {
|
|
"args": {
|
|
"invoice_id": "test-id-123",
|
|
"email_recipients": [],
|
|
"email_subject": "",
|
|
"email_body": "test@example.com"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"send_invoice:empty-email_body": {
|
|
"args": {
|
|
"invoice_id": "test-id-123",
|
|
"email_recipients": [],
|
|
"email_subject": "test@example.com",
|
|
"email_body": ""
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"list_clients": {
|
|
"args": {
|
|
"page": 50,
|
|
"per_page": 50
|
|
},
|
|
"expect": "content && content.length > 0"
|
|
},
|
|
"create_client": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "Test Name",
|
|
"lname": "Test Name",
|
|
"organization": "test_value",
|
|
"p_street": "test_value",
|
|
"p_city": "test_value",
|
|
"p_province": "test_value",
|
|
"p_code": "javascript",
|
|
"p_country": "test_value",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "test_value",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "content && content.length > 0"
|
|
},
|
|
"create_client:empty-email": {
|
|
"args": {
|
|
"email": "",
|
|
"fname": "Test Name",
|
|
"lname": "Test Name",
|
|
"organization": "test_value",
|
|
"p_street": "test_value",
|
|
"p_city": "test_value",
|
|
"p_province": "test_value",
|
|
"p_code": "javascript",
|
|
"p_country": "test_value",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "test_value",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_client:empty-fname": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "",
|
|
"lname": "Test Name",
|
|
"organization": "test_value",
|
|
"p_street": "test_value",
|
|
"p_city": "test_value",
|
|
"p_province": "test_value",
|
|
"p_code": "javascript",
|
|
"p_country": "test_value",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "test_value",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_client:empty-lname": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "Test Name",
|
|
"lname": "",
|
|
"organization": "test_value",
|
|
"p_street": "test_value",
|
|
"p_city": "test_value",
|
|
"p_province": "test_value",
|
|
"p_code": "javascript",
|
|
"p_country": "test_value",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "test_value",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_client:empty-organization": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "Test Name",
|
|
"lname": "Test Name",
|
|
"organization": "",
|
|
"p_street": "test_value",
|
|
"p_city": "test_value",
|
|
"p_province": "test_value",
|
|
"p_code": "javascript",
|
|
"p_country": "test_value",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "test_value",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_client:empty-p_street": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "Test Name",
|
|
"lname": "Test Name",
|
|
"organization": "test_value",
|
|
"p_street": "",
|
|
"p_city": "test_value",
|
|
"p_province": "test_value",
|
|
"p_code": "javascript",
|
|
"p_country": "test_value",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "test_value",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_client:empty-p_city": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "Test Name",
|
|
"lname": "Test Name",
|
|
"organization": "test_value",
|
|
"p_street": "test_value",
|
|
"p_city": "",
|
|
"p_province": "test_value",
|
|
"p_code": "javascript",
|
|
"p_country": "test_value",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "test_value",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_client:empty-p_province": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "Test Name",
|
|
"lname": "Test Name",
|
|
"organization": "test_value",
|
|
"p_street": "test_value",
|
|
"p_city": "test_value",
|
|
"p_province": "",
|
|
"p_code": "javascript",
|
|
"p_country": "test_value",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "test_value",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_client:empty-p_code": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "Test Name",
|
|
"lname": "Test Name",
|
|
"organization": "test_value",
|
|
"p_street": "test_value",
|
|
"p_city": "test_value",
|
|
"p_province": "test_value",
|
|
"p_code": "",
|
|
"p_country": "test_value",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "test_value",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_client:empty-p_country": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "Test Name",
|
|
"lname": "Test Name",
|
|
"organization": "test_value",
|
|
"p_street": "test_value",
|
|
"p_city": "test_value",
|
|
"p_province": "test_value",
|
|
"p_code": "javascript",
|
|
"p_country": "",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "test_value",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_client:empty-currency_code": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "Test Name",
|
|
"lname": "Test Name",
|
|
"organization": "test_value",
|
|
"p_street": "test_value",
|
|
"p_city": "test_value",
|
|
"p_province": "test_value",
|
|
"p_code": "javascript",
|
|
"p_country": "test_value",
|
|
"currency_code": "",
|
|
"bus_phone": "test_value",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_client:empty-bus_phone": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "Test Name",
|
|
"lname": "Test Name",
|
|
"organization": "test_value",
|
|
"p_street": "test_value",
|
|
"p_city": "test_value",
|
|
"p_province": "test_value",
|
|
"p_code": "javascript",
|
|
"p_country": "test_value",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "",
|
|
"note": "test_value"
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"create_client:empty-note": {
|
|
"args": {
|
|
"email": "test@example.com",
|
|
"fname": "Test Name",
|
|
"lname": "Test Name",
|
|
"organization": "test_value",
|
|
"p_street": "test_value",
|
|
"p_city": "test_value",
|
|
"p_province": "test_value",
|
|
"p_code": "javascript",
|
|
"p_country": "test_value",
|
|
"currency_code": "javascript",
|
|
"bus_phone": "test_value",
|
|
"note": ""
|
|
},
|
|
"expect": "exists"
|
|
},
|
|
"list_expenses": {
|
|
"args": {
|
|
"page": 50,
|
|
"per_page": 50
|
|
},
|
|
"expect": "content && content.length > 0"
|
|
},
|
|
"list_payments": {
|
|
"args": {
|
|
"page": 50,
|
|
"per_page": 50
|
|
},
|
|
"expect": "content && content.length > 0"
|
|
}
|
|
},
|
|
"resources": {},
|
|
"prompts": {},
|
|
"timeout": 30000
|
|
}
|
|
} |