salesforce-mcp-23-mdapi-calls-missing-asyncio-to-thread

All synchronous conn.mdapi.* calls (create, update, delete, read_metadata) inside async functions must be wrapped in asyncio.to_thread() to avoid blocking the event loop. 23 violations were found across metadata/operations.py (14), security/operations.py (5), integration/operations.py (3), and utilities/operations.py (1). Pattern: await asyncio.to_thread(conn.mdapi.X.create, metadata).