MCP ಸರ್ವರ್ ಒಂದು API ಅನ್ನು ಕೆಲವು ಹೆಸರಿಡಲಾದ ಟೂಲ್ಗಳಾಗಿ ಬದಲಾಯಿಸುತ್ತದೆ, ಅವನ್ನು ಏಜೆಂಟ್ ಸಂಭಾಷಣೆಯ ನಡುವೆ ಕರೆಯುತ್ತದೆ. ಟೂಲ್ ಒಂದು ಹ್ಯಾಂಡಲ್ ಹಿಂತಿರುಗಿಸಿದಾಗ ಉದ್ದದ ಕೆಲಸವೂ ಅದರ ಹಿಂದೆ ಸರಿಹೊಂದುತ್ತದೆ; ಏಜೆಂಟ್ ಅದಕ್ಕಾಗಿ ಸೀಮಿತ ಸುತ್ತುಗಳಲ್ಲಿ ಕಾಯುತ್ತದೆ. ಪಾಡ್ಕಾಸ್ಟ್ ಲಿಂಕ್ ಅಂಟಿಸಿ, ಫ್ರೆಂಚ್ನಲ್ಲಿ ಸಾರಾಂಶ ಕೇಳಿ, ಯಾವುದೇ ಕೋಡ್ ಬರೆಯಬೇಕಾಗಿಲ್ಲ.
ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ ಯಾವುದೇ ಪ್ರೋಗ್ರಾಂ ಮಾಡುವಂತೆಯೇ VocalStack API ಅನ್ನು ಬಳಸಬಹುದು: API ಉಲ್ಲೇಖ ಓದಿ, SDK ಯೊಂದಿಗೆ ಕೆಲವು ಸಾಲುಗಳನ್ನು ಬರೆಯಿರಿ, ಚಲಾಯಿಸಿ. ಏಜೆಂಟ್ ಇಲ್ಲದೆ ಚಲಿಸುವ ಕೆಲಸಕ್ಕೆ ಇದು ಸರಿಯಾದ ಮಾರ್ಗ.
MCP (Model Context Protocol) ಇನ್ನೊಂದು ಸಂದರ್ಭಕ್ಕಾಗಿ: ನೀವು ಒಬ್ಬ ಸಹಾಯಕರೊಂದಿಗೆ ಮಾತನಾಡುತ್ತಿದ್ದೀರಿ ಮತ್ತು ಕೋಡ್ ಇಲ್ಲದೆ ಈಗಲೇ ಏನನ್ನಾದರೂ ಟ್ರಾನ್ಸ್ಕ್ರೈಬ್ ಮಾಡಬೇಕೆಂದು ಬಯಸುತ್ತೀರಿ. MCP ಸರ್ವರ್ ಹೆಸರಿಡಲಾದ ಟೂಲ್ಗಳ ಸಣ್ಣ ಪಟ್ಟಿಯನ್ನು ಪ್ರಕಟಿಸುತ್ತದೆ; ಪ್ರತಿಯೊಂದಕ್ಕೂ ವಿವರಣೆ ಮತ್ತು ಅದರ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳಿಗೆ JSON ಸ್ಕೀಮಾ ಇರುತ್ತದೆ. ಏಜೆಂಟ್ ಪಟ್ಟಿಯನ್ನು ಒಮ್ಮೆ ಓದುತ್ತದೆ, ಮತ್ತು ವಿನಂತಿ ಒಂದಕ್ಕೆ ಹೊಂದಿದಾಗ ಟೂಲ್ ಅನ್ನು ಹೆಸರಿನಿಂದ ಕರೆಯುತ್ತದೆ. "ಈ ಪಾಡ್ಕಾಸ್ಟ್ ಟ್ರಾನ್ಸ್ಕ್ರೈಬ್ ಮಾಡಿ ಮತ್ತು ಅವರು ಬೆಲೆಗಳ ಬಗ್ಗೆ ಏನು ಹೇಳಿದರು ಎಂದು ತಿಳಿಸಿ" ಎನ್ನುವುದು ಮೂರು ಟೂಲ್ ಕರೆಗಳಾಗುತ್ತದೆ, ಮತ್ತು ಏಜೆಂಟ್ ಎಂದಿಗೂ HTTP ಮಾರ್ಗವನ್ನು ನೋಡುವುದಿಲ್ಲ.
ಸರ್ವರ್ಗಳಲ್ಲಿ ಎರಡು ವಿಧಗಳಿವೆ. ಸ್ಥಳೀಯ ಸರ್ವರ್ ಕ್ಲೈಂಟ್ನ ಉಪಪ್ರಕ್ರಿಯೆಯಾಗಿ ಚಲಿಸಿ stdio ಮೂಲಕ ಸಂವಹನ ನಡೆಸುತ್ತದೆ; ಹೆಚ್ಚಿನ ಫೈಲ್-ಸಿಸ್ಟಮ್ ಮತ್ತು ಡೇಟಾಬೇಸ್ ಸರ್ವರ್ಗಳು ಈ ರೀತಿ ಕೆಲಸ ಮಾಡುತ್ತವೆ. ರಿಮೋಟ್ ಸರ್ವರ್ ಒಂದು URL ಹಿಂದೆ ಇದ್ದು Streamable HTTP ಬಳಸುತ್ತದೆ; ಇದು ಹಳೆಯ HTTP-plus-SSE (server-sent events) ಸಾರಿಗೆಯನ್ನು ಬದಲಾಯಿಸಿದ ಸಾರಿಗೆ, ಸ್ಪೆಕ್ನ ಮಾರ್ಚ್ 2025 ಆವೃತ್ತಿಯಲ್ಲಿ. ಕ್ಲೈಂಟ್ ಪ್ರತಿ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ, ಮತ್ತು ಸರ್ವರ್ ಅದೇ ಸಂಪರ್ಕದಲ್ಲಿ ಉತ್ತರಿಸುತ್ತದೆ; ಅಂತಿಮ ಫಲಿತಾಂಶದ ಮೊದಲು ಅದು ಹೇಳಬೇಕಾದದ್ದು ಏನಾದರೂ ಇದ್ದರೆ ಅದನ್ನು ಮೊದಲೇ ಸ್ಟ್ರೀಮ್ ಮಾಡಲಾಗುತ್ತದೆ. ಪ್ರಸ್ತುತ ಸ್ಪೆಕ್ಗೆ ಬರೆದ ಯಾವುದೇ ಕ್ಲೈಂಟ್ ಎರಡೂ ವಿಧಗಳನ್ನು ಬಳಸಬಹುದು.
VocalStack ನ ಸರ್ವರ್ ರಿಮೋಟ್ ವಿಧದ್ದು, {{api}}/v1/mcp ನಲ್ಲಿದೆ, ಮತ್ತು ಅದನ್ನು ಬಳಸಲು API ಗೆ ಆಗುವ ವೆಚ್ಚವೇ ಆಗುತ್ತದೆ. ನಿಮಗೆ ಬೇಕಾಗಿರುವುದು ಕೇವಲ URL.
{{app}}/developers ನಲ್ಲಿ ಡ್ಯಾಶ್ಬೋರ್ಡ್ನ Developers ಪ್ರದೇಶ ತೆರೆಯಿರಿ. ಮೊದಲ ಟ್ಯಾಬ್, Connect an AI agent, ಸರ್ವರ್ URL ಮತ್ತು ಪ್ರತಿ ಕ್ಲೈಂಟ್ಗೆ ಸೆಟಪ್ ಸ್ನಿಪೆಟ್ ತೋರಿಸುತ್ತದೆ. ಕೆಳಗಿನ ಮೂರು ಸ್ನಿಪೆಟ್ಗಳು ಅಲ್ಲಿ ತೋರಿಸುವ ಸ್ನಿಪೆಟ್ಗಳಿಗೆ ಹೊಂದುತ್ತವೆ.
ನಿಮ್ಮ ಟರ್ಮಿನಲ್ನಲ್ಲಿ ಇದನ್ನು ಚಲಾಯಿಸಿ:
claude mcp add --transport http vocalstack {{api}}/v1/mcp
ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ನಲ್ಲಿರುವ .cursor/mcp.json ಗೆ, ಅಥವಾ ಪ್ರತಿ ಪ್ರಾಜೆಕ್ಟ್ಗೂ ಬೇಕಿದ್ದರೆ ~/.cursor/mcp.json ಗೆ ಇದನ್ನು ಸೇರಿಸಿ:
{"mcpServers":{"vocalstack":{"url":"{{api}}/v1/mcp"}}}
Streamable HTTP ಬೆಂಬಲಿಸುವ ಯಾವುದೇ ಕ್ಲೈಂಟ್ ಈ URL ಮೂಲಕ ಸರ್ವರ್ ಸೇರಿಸಬಹುದು. ಇದು ಡ್ಯಾಶ್ಬೋರ್ಡ್ ತೋರಿಸುವ ಸಾಮಾನ್ಯ ರೂಪ:
{
"vocalstack": {
"type": "streamable-http",
"url": "{{api}}/v1/mcp"
}
}
ಪ್ರಾರಂಭಿಸಲು ನಿಮಗೆ API ಕೀ ಬೇಕಾಗಿಲ್ಲ. ಕ್ಲೈಂಟ್ ಮೊದಲ ಬಾರಿಗೆ ಸಂಪರ್ಕಗೊಂಡಾಗ, ಬ್ರೌಸರ್ನಲ್ಲಿ ನಿಮ್ಮ VocalStack ಖಾತೆಯೊಂದಿಗೆ ಸೈನ್ ಇನ್ ಮಾಡುತ್ತೀರಿ, ಮತ್ತು ಕ್ಲೈಂಟ್ ಟೋಕನ್ ಅನ್ನು ಇಟ್ಟುಕೊಳ್ಳುತ್ತದೆ. ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಇದನ್ನು ಒಂದು ಸಾಲಿನಲ್ಲಿ ಹೇಳುತ್ತದೆ: "You'll sign in with your VocalStack account the first time. No key needed."
ಇದು VocalStack ನ ವಿಶೇಷತೆಯಲ್ಲ, ಬದಲಿಗೆ MCP ನ ದೃಢೀಕರಣ ಸ್ಪೆಕ್ ಕೆಲಸ ಮಾಡುವ ರೀತಿ. ರಿಮೋಟ್ ಸರ್ವರ್ ದೃಢೀಕರಿಸದ ವಿನಂತಿಗೆ 401 ನೊಂದಿಗೆ ಉತ್ತರಿಸುತ್ತದೆ, ಅದು protected-resource ಮೆಟಾಡೇಟಾಗೆ ಸೂಚಿಸುತ್ತದೆ: ದೃಢೀಕರಣ ಸರ್ವರ್ ಮತ್ತು ಸರ್ವರ್ ಬಯಸುವ ಸ್ಕೋಪ್ಗಳನ್ನು ಹೆಸರಿಸುವ ಸಣ್ಣ JSON ದಾಖಲೆ. ಕ್ಲೈಂಟ್ ಅದನ್ನು ಓದಿ, ನಿಮ್ಮ ಬ್ರೌಸರ್ನಲ್ಲಿ ಪ್ರಮಾಣಿತ OAuth 2.1 ಹರಿವು ನಡೆಸುತ್ತದೆ, ಮತ್ತು ಆ ಸರ್ವರ್ಗಾಗಿ ಮಾತ್ರ ನೀಡಲಾದ ಟೋಕನ್ನೊಂದಿಗೆ ಹಿಂತಿರುಗುತ್ತದೆ. ಸ್ಪೆಕ್ ಅನುಸರಿಸುವ ಯಾವುದೇ ರಿಮೋಟ್ MCP ಸರ್ವರ್ ಇದೇ ರೀತಿ ಸೈನ್ ಇನ್ ಮಾಡುತ್ತದೆ; ಅದಕ್ಕಾಗಿಯೇ ಮೇಲಿನ ಕ್ಲೈಂಟ್ಗಳು VocalStack ಬಗ್ಗೆ ಏನನ್ನೂ ತಿಳಿಯದೆ ಇದನ್ನು ಮಾಡಬಲ್ಲವು.
ಸರ್ವರ್ ಅಥವಾ ಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಚಲಿಸುವ ಕ್ಲೈಂಟ್ಗೆ API ಕೀ ಕೂಡ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಅದನ್ನು Authorization: Bearer vs_key_... ಎಂದು ಕಳುಹಿಸಿ; REST API ಸ್ವೀಕರಿಸುವ ಅದೇ ಹೆಡರ್ ಇದು. ಕೀಗಳನ್ನು Developers → API keys ಅಡಿಯಲ್ಲಿ ರಚಿಸಲಾಗುತ್ತದೆ. ಎರಡು ಟ್ರಾನ್ಸ್ಕ್ರೈಬ್ ಟೂಲ್ಗಳಿಗೆ Write ಮತ್ತು Stream audio ಅನುಮತಿಗಳು ಬೇಕು. ಫೈಲ್ಗೆ ಎರಡನೆಯದು ವಿಚಿತ್ರವೆನಿಸಬಹುದು, ಆದರೆ ಈ ಟೂಲ್ಗಳು ಪ್ರತಿ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್ನ ಅದೇ ಸೃಷ್ಟಿ ಬಿಂದುವಿನ ಮೂಲಕ ಹೋಗುತ್ತವೆ, ಲೈವ್ ಸಹ ಸೇರಿ, ಮತ್ತು ಆ ಬಿಂದು ಎರಡನ್ನೂ ಪರಿಶೀಲಿಸುತ್ತದೆ. ಓದುವ ಟೂಲ್ಗಳಿಗೆ Read ಬೇಕು; list_voices ಗೆ ಮಾನ್ಯವಾದ ಕ್ರೆಡೆನ್ಶಿಯಲ್ ಮಾತ್ರ ಸಾಕು.
ನೀವು ಸೈನ್ ಇನ್ ಆದ ನಂತರ, ಏಜೆಂಟ್ ಒಂಬತ್ತು ಟೂಲ್ಗಳನ್ನು ನೋಡುತ್ತದೆ. ಅವುಗಳನ್ನು ನೀವು ಅಪರೂಪವಾಗಿ ಹೆಸರಿಸುತ್ತೀರಿ, ಆದರೆ ಅವು ಏನು ಎಂದು ತಿಳಿದರೆ ಏಜೆಂಟ್ ಮುಂದೆ ಏನು ಮಾಡುತ್ತದೆ ಎಂದು ಅರ್ಥವಾಗುತ್ತದೆ.
ಪ್ರತಿ ಟೂಲ್ camelCase JSON ಸ್ವೀಕರಿಸಿ ಹಿಂತಿರುಗಿಸುತ್ತದೆ, /v1 ವೈರ್ ಟೈಪ್ಗಳಂತೆಯೇ ಅದೇ ಫೀಲ್ಡ್ ಹೆಸರುಗಳೊಂದಿಗೆ; ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್ನ ಹ್ಯಾಂಡಲ್ ಅದರ transcriptionId.
transcribe_url ಸಾರ್ವಜನಿಕ URL ನಲ್ಲಿರುವ ಆಡಿಯೊ ಅಥವಾ ವೀಡಿಯೊವನ್ನು ಟ್ರಾನ್ಸ್ಕ್ರೈಬ್ ಮಾಡಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ: ಫೈಲ್ ಲಿಂಕ್, ಪಾಡ್ಕಾಸ್ಟ್ ಸಂಚಿಕೆ, YouTube ವೀಡಿಯೊ. ಲೈವ್ ಸ್ಟ್ರೀಮ್ಗಳನ್ನು ಸ್ವೀಕರಿಸಲಾಗುವುದಿಲ್ಲ. ಐಚ್ಛಿಕ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳು: name, spokenLanguage (ಭಾಷೆಯನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಬಿಡಲು ಅದನ್ನು ಬಿಟ್ಟುಬಿಡಿ), speakerLabels (auto, on ಅಥವಾ off) ಮತ್ತು ಆಡಿಯೊದ ಒಂದು ಭಾಗವನ್ನು ಮಾತ್ರ ಟ್ರಾನ್ಸ್ಕ್ರೈಬ್ ಮಾಡಲು startS/endS.transcribe_file ಏಜೆಂಟ್ ಹೊಂದಿರುವ ಫೈಲ್ಗೂ ಇದೇ ಕೆಲಸ ಮಾಡುತ್ತದೆ, fileBase64 ಮತ್ತು ಅದರ filename ಮೂಲಕ ಕಳುಹಿಸಲಾದದ್ದು. ಡಿಕೋಡ್ ಮಾಡಿದ ಗಾತ್ರ 10 MiB ಗೆ ಸೀಮಿತ, ಸುಮಾರು ಹತ್ತು ನಿಮಿಷಗಳ 128 kbps MP3; ಅದಕ್ಕಿಂತ ದೊಡ್ಡದಕ್ಕೆ, ಏಜೆಂಟ್ಗೆ ಲಿಂಕ್ ಕೊಡಿ.ಎರಡೂ ತಕ್ಷಣ ಹಿಂತಿರುಗುತ್ತವೆ, transcriptionId, state: "queued" ಮತ್ತು ಕಾಯುವ ಟೂಲ್ ಹೆಸರಿಸುವ next ಸೂಚನೆಯೊಂದಿಗೆ. ಏಜೆಂಟ್ ರಚಿಸಿದ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್ಗಳು ಖಾಸಗಿಯಾಗಿ ಪ್ರಾರಂಭವಾಗುತ್ತವೆ, ಹಂಚಿಕೆ ಲಿಂಕ್ ಇಲ್ಲದೆ.
ಏಜೆಂಟ್ ಲೈವ್ ಪ್ರಸಾರವನ್ನು ನೀವು ಮಾಡುವುದಕ್ಕಿಂತ ಹೆಚ್ಚು ತಾಳ್ಮೆಯಿಂದ ಕಾಯಲಾರದು; ಯಾರಾದರೂ ಲ್ಯಾಪ್ಟಾಪ್ ತೆಗೆದುಕೊಂಡು ಹೋಗುವವರೆಗೂ ಅದು ಕಾಯುವ ಟೂಲ್ ಅನ್ನು ಪದೇ ಪದೇ ಕರೆಯುತ್ತಲೇ ಇರುತ್ತದೆ. ಮುಗಿದ ರೆಕಾರ್ಡಿಂಗ್ಗೆ ಒಂದು ಅಂತ್ಯವಿದೆ, ಮತ್ತು ಮುಂದಿನ ಜೋಡಿ ಟೂಲ್ಗಳು ಕಾಯುವುದು ಅದನ್ನೇ.
ಒಂದು ಟೂಲ್ ಕರೆ ಒಂದು HTTP ವಿನಂತಿ, ಮತ್ತು HTTP ವಿನಂತಿಗಳು ಒಂದು ಗಂಟೆ ಇರಬೇಕಾದವಲ್ಲ. ಕ್ಲೈಂಟ್ಗಳು ಅವುಗಳನ್ನು ಬಿಟ್ಟುಬಿಡುತ್ತವೆ, ಪ್ರಾಕ್ಸಿಗಳು ಅವುಗಳನ್ನು ಮುಚ್ಚುತ್ತವೆ, ಮತ್ತು ಒಂದು ಟೂಲ್ನಲ್ಲಿ ತಡೆಯಲಾದ ಮಾದರಿ ಬೇರೆ ಏನನ್ನೂ ಮಾಡಲಾರದು. ಆದ್ದರಿಂದ MCP ಹಿಂದಿನ ಯಾವುದೇ ಉದ್ದದ ಕೆಲಸಕ್ಕೆ ಮಾದರಿ ಇದು, REST API ಸಹ ಬಳಸುವುದು: ಕೆಲಸ ಪ್ರಾರಂಭಿಸಿ ಒಂದು ಹ್ಯಾಂಡಲ್ ಪಡೆಯಿರಿ, ಸೀಮಿತ ಸಮಯ ಅದಕ್ಕಾಗಿ ಕಾಯಿರಿ, ಮುಗಿದಿಲ್ಲದಿದ್ದರೆ ಮತ್ತೆ ಕರೆಯಿರಿ. ಸ್ಥಿತಿಯನ್ನು ಹೊತ್ತಿರುವುದು ಹ್ಯಾಂಡಲ್, ಸಂಪರ್ಕವಲ್ಲ.
wait_for_transcription ಕೆಲಸ done ಅಥವಾ failed ಆಗುವವರೆಗೆ, ಅಥವಾ timeoutS ಕಳೆಯುವವರೆಗೆ ತಡೆಯುತ್ತದೆ (ಡೀಫಾಲ್ಟ್ 50 ಸೆಕೆಂಡ್, ಗರಿಷ್ಠ 60, ಇದು ಹೆಚ್ಚಿನ ಕ್ಲೈಂಟ್ಗಳು ಮತ್ತು ಪ್ರಾಕ್ಸಿಗಳು ಹಾಕುವ ಟೈಮ್ಔಟ್ಗಳ ಕೆಳಗೆ ಕರೆಯನ್ನು ಇಡುತ್ತದೆ). ಫಲಿತಾಂಶ timedOut: true ಎಂದು ಹೇಳಿದರೆ, ಕೆಲಸ ಇನ್ನೂ ನಡೆಯುತ್ತಿದೆ, ಮತ್ತು ಏಜೆಂಟ್ ಟೂಲ್ ಅನ್ನು ಮತ್ತೆ ಕರೆಯುತ್ತದೆ. ಟೂಲ್ ಕಾಯುತ್ತಿರುವಾಗ, ಕ್ಲೈಂಟ್ ಕೇಳಿದ್ದರೆ ಸರ್ವರ್ MCP ಪ್ರಗತಿ ಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ: ಶೇಕಡಾವಾರು ಮತ್ತು "fetching 3.1 / 8.0 MB" ಅಥವಾ "transcribing 01:25 of 02:00" ನಂತಹ ಹಂತ.get_transcription ಸ್ಥಿತಿಯನ್ನು ಮತ್ತು ಮುಗಿದ ನಂತರ ಪಠ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. format: "text" ಪ್ರತಿ ಸೆಗ್ಮೆಂಟ್ಗೆ ಒಂದು ಸಾಲು ನೀಡುತ್ತದೆ, [mm:ss] Speaker 1: ... ರೂಪದಲ್ಲಿ; "segments" start, end, speaker ಮತ್ತು speakerName ಸಹಿತ ಸಮಯ ಗುರುತಿನ ಸಾಲುಗಳನ್ನು ನೀಡುತ್ತದೆ; includeWords: true ಪದಗಳ ಸಮಯವನ್ನು ಸೇರಿಸುತ್ತದೆ. ಫಲಿತಾಂಶಗಳನ್ನು ಪುಟವಾರು ನೀಡಲಾಗುತ್ತದೆ (offset, limit, ಡೀಫಾಲ್ಟ್ 500 ಸೆಗ್ಮೆಂಟ್ಗಳು), ಇನ್ನೂ ಇದ್ದರೆ nextOffset ನೊಂದಿಗೆ.ಪುಟವಾರು ನೀಡುವುದು ನೆಟ್ವರ್ಕ್ಗಾಗಿ ಅಲ್ಲ, ಮಾದರಿಗಾಗಿ. ಟೂಲ್ ಹಿಂತಿರುಗಿಸುವ ಎಲ್ಲವೂ ಏಜೆಂಟ್ನ ಸಂದರ್ಭ ವಿಂಡೋಗೆ ಅಂಟಿಕೊಳ್ಳುತ್ತದೆ, ಅಲ್ಲಿ ಅದು ನಿಮ್ಮ ಸಂಭಾಷಣೆಯೊಂದಿಗೆ ಸ್ಪರ್ಧಿಸುತ್ತದೆ ಮತ್ತು ನಂತರದ ಪ್ರತಿ ತಿರುವಿಗೂ ಟೋಕನ್ಗಳನ್ನು ಖರ್ಚು ಮಾಡುತ್ತದೆ. ಎರಡು ಗಂಟೆಗಳ ಸಭೆ ಹತ್ತಾರು ಸಾವಿರ ಪದಗಳು; ಎಲ್ಲವನ್ನೂ ಒಮ್ಮೆಲೇ ಹಿಂತಿರುಗಿಸಿದರೆ ನೀವು ಕೇಳಿದ ಪ್ರಶ್ನೆ ಸಂದರ್ಭದಿಂದ ಹೊರಗೆ ತಳ್ಳಲ್ಪಡುತ್ತದೆ. ಉತ್ತಮ MCP ಟೂಲ್ಗಳು ಒಂದು ಪುಟ ಮತ್ತು ಕರ್ಸರ್ ಹಿಂತಿರುಗಿಸುತ್ತವೆ, ಮತ್ತು ಏಜೆಂಟ್ ಎಷ್ಟು ಬೇಕು ಎಂದು ನಿರ್ಧರಿಸಲು ಬಿಡುತ್ತವೆ.
ಸಂಪರ್ಕ ಕಡಿತ ಅಥವಾ ಟೈಮ್ಔಟ್ ಕೆಲಸವನ್ನು ಎಂದಿಗೂ ರದ್ದುಮಾಡುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಕೆಲಸ ಸರ್ವರ್ನಲ್ಲಿ ವಾಸಿಸುತ್ತದೆ, MCP ವಿನಂತಿಯಲ್ಲಿ ಅಲ್ಲ. ಮುಗಿದ ನಂತರ, ಕೆಲಸ ನಿಮ್ಮ ಲೈಬ್ರರಿಯಲ್ಲಿ ಇನ್ನೊಂದು ನಮೂದಾಗುತ್ತದೆ, ಮತ್ತು ಮುಂದಿನ ಟೂಲ್ಗಳು ಅದನ್ನು ಇತರ ಯಾವುದೇ ನಮೂದಿನಂತೆ ನಡೆಸಿಕೊಳ್ಳುತ್ತವೆ.
list_transcriptions ಖಾತೆಯ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್ಗಳನ್ನು ಹೊಸವು ಮೊದಲು ಬರುವಂತೆ ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ಸ್ಥಿತಿ ಮತ್ತು ಅವಧಿಯೊಂದಿಗೆ; lifecycle active, archived ಅಥವಾ all ಆಗಿರಬಹುದು.search_transcriptions ಪ್ರತಿ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್ನಲ್ಲಿ ಹೇಳಿದ್ದನ್ನು, ಯಾವುದೇ ಭಾಷೆಯಲ್ಲಿ, ಹುಡುಕುತ್ತದೆ ಮತ್ತು ಹೊಂದಾಣಿಕೆಯ ಸಾಲುಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಪ್ರತಿಯೊಂದರೊಂದಿಗೆ ಅದರ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್ ಮತ್ತು ಅದನ್ನು ಮಾತನಾಡಿದ ಸೆಕೆಂಡ್. transcriptionId ಹುಡುಕಾಟವನ್ನು ಒಂದು ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್ಗೆ ಸೀಮಿತಗೊಳಿಸುತ್ತದೆ; lang ಪ್ರತಿ ಹೊಂದಾಣಿಕೆಗೆ ಅನುವಾದವನ್ನು ಸೇರಿಸುತ್ತದೆ.ಒಂದು ಸಾಲನ್ನು ಹುಡುಕುವುದು ಸುಲಭ ಭಾಗ. ಇನ್ನೆರಡು ಟೂಲ್ಗಳು ಇಡೀ ವಿಷಯ ಏನು ಹೇಳಿತು ಎಂದು ಲೆಕ್ಕಹಾಕುತ್ತವೆ.
get_summary ಮುಗಿದ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್ನ AI ಶೀರ್ಷಿಕೆ ಮತ್ತು ಸಾರಾಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಬಯಸಿದರೆ lang ನೊಂದಿಗೆ ಅನುವಾದಿಸಿ. state: "pending" ಎಂದರೆ ಸಾರಾಂಶ ಇನ್ನೂ ಬರೆಯಲಾಗುತ್ತಿದೆ (ಕೆಲಸ ಮುಗಿದ ಕೆಲವೇ ಸೆಕೆಂಡ್ಗಳಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಸಿದ್ಧವಾಗುತ್ತದೆ), ಮತ್ತು ಏಜೆಂಟ್ ಮತ್ತೆ ಕೇಳುತ್ತದೆ.translate_transcription ಮುಗಿದ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಇನ್ನೊಂದು ಭಾಷೆಯಲ್ಲಿ ಪಠ್ಯವಾಗಿ ಅಥವಾ ಸಮಯ ಸಹಿತ ಸೆಗ್ಮೆಂಟ್ಗಳಾಗಿ ಹಿಂತಿರುಗಿಸುತ್ತದೆ, get_transcription ನಂತೆ ಪುಟವಾರು. ಅನುವಾದಗಳನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಮತ್ತೆ ಕೇಳಿದರೆ ಕೆಲಸ ಪುನರಾವರ್ತನೆಯಾಗುವುದಿಲ್ಲ.list_voices ಒಂದು ಭಾಷೆಯಲ್ಲಿ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಟ್ ಓದಬಲ್ಲ ಧ್ವನಿಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ: ಐಡಿ, ಹೆಸರು, ಲಿಂಗ ಮತ್ತು ಉಚ್ಚಾರಣೆ (ತಿಳಿದಾಗ), ಗುಣಮಟ್ಟದ ರೇಟಿಂಗ್, ಮತ್ತು ಅದು ಡೀಫಾಲ್ಟ್ ಧ್ವನಿಯೇ ಅಥವಾ ನಿಮ್ಮ ಕ್ಲೋನ್ ಮಾಡಿದ ಧ್ವನಿಗಳಲ್ಲಿ ಒಂದೇ ಎಂದು. ಅದು ಧ್ವನಿಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ; ಒಂದು ಧ್ವನಿಯನ್ನು ಹೊಸದನ್ನು ಹೇಳಿಸುವುದಿಲ್ಲ (ಸರ್ವರ್ ಏನು ಮಾಡುವುದಿಲ್ಲ ಎಂಬುದರ ಬಗ್ಗೆ ಕೆಳಗೆ ನೋಡಿ).ಈ ಟೂಲ್ಗಳು ಒಟ್ಟಾಗಿ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ ಎಂಬುದು ಇಲ್ಲಿದೆ.
ಸರ್ವರ್ ಸೇರಿಸಿದ ನಂತರ, Claude Code ನಲ್ಲಿ ಸಂಭಾಷಣೆ ಹೀಗೆ ಸಾಗುತ್ತದೆ. ನೀವು ಪಾಡ್ಕಾಸ್ಟ್ ಲಿಂಕ್ ಅಂಟಿಸಿ ಫ್ರೆಂಚ್ನಲ್ಲಿ ಸಾರಾಂಶ ಕೇಳುತ್ತೀರಿ.
ಏಜೆಂಟ್ transcribe_url ಅನ್ನು ಕರೆಯುತ್ತದೆ:
{ "url": "https://example.org/episodes/42.mp3", "name": "Episode 42", "speakerLabels": "auto" }
ಅದು transcriptionId ಮತ್ತು state: "queued" ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಮತ್ತು next ಸೂಚನೆಯನ್ನು ಅನುಸರಿಸುತ್ತದೆ:
{ "transcriptionId": "4f1c...", "timeoutS": 50 }
ಐವತ್ತು ನಿಮಿಷದ ಸಂಚಿಕೆ ಅದು ಪ್ಲೇ ಆಗುವುದಕ್ಕಿಂತ ಹಲವು ಪಟ್ಟು ವೇಗವಾಗಿ ಟ್ರಾನ್ಸ್ಕ್ರೈಬ್ ಆಗುತ್ತದೆ, ಆದರೆ ಒಂದೇ ಕಾಯುವಿಕೆಯಲ್ಲಿ ಅಲ್ಲ. ಮೊದಲ ಕಾಯುವಿಕೆ timedOut: true ನೀಡುತ್ತದೆ, ಪ್ರಗತಿ ಉದಾಹರಣೆಗೆ ಶೇಕಡಾ 61 ರಲ್ಲಿ, ಆದ್ದರಿಂದ ಏಜೆಂಟ್ ಟೂಲ್ ಅನ್ನು ಇನ್ನೊಮ್ಮೆ ಕರೆಯುತ್ತದೆ ಮತ್ತು state: "done" ಪಡೆಯುತ್ತದೆ.
ಈಗ ಏಜೆಂಟ್ lang: "fr" ನೊಂದಿಗೆ get_summary ಕರೆಯುತ್ತದೆ:
{ "transcriptionId": "4f1c...", "lang": "fr" }
ಸಾರಾಂಶ ಇನ್ನೂ pending ಆಗಿದ್ದರೆ, ಏಜೆಂಟ್ ಕೆಲವು ಸೆಕೆಂಡ್ ಕಾಯುತ್ತದೆ; ಇಲ್ಲದಿದ್ದರೆ ಅದು ನಿಮಗೆ ಫ್ರೆಂಚ್ನಲ್ಲಿ ಶೀರ್ಷಿಕೆ ಮತ್ತು ಸಾರಾಂಶವನ್ನು ನೀಡುತ್ತದೆ. "ಬೆಲೆಗಳ ಬಗ್ಗೆ ಎಲ್ಲಿ ಮಾತನಾಡಿದರು?" ಎಂದು ಕೇಳಿದರೆ, ಅದು query: "pricing" ಮತ್ತು ಅದೇ transcriptionId ನೊಂದಿಗೆ search_transcriptions ಕರೆಯುತ್ತದೆ, ಮತ್ತು ಹೊಂದಾಣಿಕೆಯ ಸಾಲುಗಳನ್ನು ಅವುಗಳ ಸಮಯ ಗುರುತುಗಳೊಂದಿಗೆ ಉಲ್ಲೇಖಿಸುತ್ತದೆ. ಇಡೀ ವಿಷಯವನ್ನು ಫ್ರೆಂಚ್ನಲ್ಲಿ ಬೇಕೆಂದರೆ, ಅದು translate_transcription ಕರೆಯುತ್ತದೆ.
ಕೆಲವು ಟೂಲ್ ಕರೆಗಳು, ಕೋಡ್ ಇಲ್ಲ, ಮತ್ತು ನಿಮ್ಮ ಲೈಬ್ರರಿಯಲ್ಲಿ ಒಂದು ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್. ಆ ಪ್ರತಿ ಕರೆಯೂ REST ವಿನಂತಿಯಂತೆಯೇ ಅದೇ ದ್ವಾರಗಳ ಮೂಲಕ ಹೋಯಿತು, ಮತ್ತು ಆ ದ್ವಾರಗಳೇ ಬಿಲ್ ಮತ್ತು ಮಿತಿಗಳನ್ನು ನಿಗದಿಪಡಿಸುತ್ತವೆ.
MCP ಸರ್ವರ್ ಇದು ಬೇರೆ ಮುಂಭಾಗದ ಬಾಗಿಲಿನ ಮೂಲಕ API ಆಗಿದೆ: ಅದೇ ಮಿತಿಗಳು, ಅದೇ ಬಿಲ್.
POST /v1/transcriptions ನಂತೆಯೇ ಅದೇ ಸೃಷ್ಟಿ ಬಿಂದುವಿನ ಮೂಲಕ ಹೋಗುತ್ತವೆ: ಪ್ಲಾನ್ನ ಸೃಷ್ಟಿ ದರ (ಗಂಟೆಗೆ ಪ್ರಾರಂಭವಾಗುವ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್ಗಳ 10, 100 ಅಥವಾ ಕಸ್ಟಮ್ ಸಂಖ್ಯೆ), ಏಕಕಾಲೀನ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್ ಮಿತಿ (1, 5 ಅಥವಾ ಅನಿಯಮಿತ) ಮತ್ತು ಅದರ ಕ್ರೆಡಿಟ್ ಎಲ್ಲವೂ ಅನ್ವಯಿಸುತ್ತವೆ. $5 ಸೈನ್ ಅಪ್ ಕ್ರೆಡಿಟ್ ಮೊದಲ ಅಧಿವೇಶನಕ್ಕೆ ಸಾಕು, ಕಾರ್ಡ್ ಬೇಡ.isError: true ಜೊತೆಗೆ REST API ನ ದೋಷ ಕೋಡ್, ಮಾದರಿ ಕ್ರಮ ತೆಗೆದುಕೊಳ್ಳಬಹುದಾದ ಒಂದು ವಾಕ್ಯ, ಮತ್ತು retryable ಹಾಗೂ retryAfterS ಕ್ಷೇತ್ರಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. insufficient_credit ಜೊತೆಗೆ topUpUrl ಬರುತ್ತದೆ; rate_limited ಎಷ್ಟು ಹೊತ್ತು ಕಾಯಬೇಕು ಎಂದು ಹೇಳುತ್ತದೆ. ಇದು ತೋರುವುದಕ್ಕಿಂತ ಹೆಚ್ಚು ಮುಖ್ಯ: ಮಾದರಿ ದೋಷ ಪಠ್ಯವನ್ನು ಓದುತ್ತದೆ, ಆದ್ದರಿಂದ ಕ್ರಮ ತೆಗೆದುಕೊಳ್ಳಬಹುದಾದ ಒಂದು ವಾಕ್ಯ ಮುಚ್ಚಿದ ಬಾಗಿಲನ್ನು ಮುಂದಿನ ಟೂಲ್ ಕರೆಯಾಗಿ ಬದಲಾಯಿಸುತ್ತದೆ./v1/mcp ವಿನಂತಿಗೂ ಅನ್ವಯಿಸುತ್ತದೆ: ಲೂಪ್ನಲ್ಲಿರುವ ಏಜೆಂಟ್ ಯಾವುದೇ ಟೂಲ್ ಚಲಿಸುವ ಮೊದಲೇ Retry-After ಸಹಿತ HTTP 429 ಪಡೆಯುತ್ತದೆ.idempotencyKey ತೆಗೆದುಕೊಳ್ಳುತ್ತವೆ: ಪೂರ್ಣಗೊಂಡ ಕರೆಯ ಕೀಯನ್ನು ಮರುಬಳಸಿದರೆ ಮೊದಲ ಫಲಿತಾಂಶ ಮರುಪ್ಲೇ ಆಗುತ್ತದೆ, ಮತ್ತು ಬೇರೆ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳೊಂದಿಗೆ ಮರುಬಳಸಿದರೆ ನಿರಾಕರಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ತಾನಾಗಿಯೇ ಮರುಪ್ರಯತ್ನಿಸುವ ಏಜೆಂಟ್ ಎರಡನೇ ಕೆಲಸವನ್ನು ಎಂದಿಗೂ ಪ್ರಾರಂಭಿಸುವುದಿಲ್ಲ. ಹಣ ಖರ್ಚು ಮಾಡುವ ಪ್ರತಿ ಟೂಲ್ ಇದನ್ನು ನೀಡಬೇಕು; ಏಜೆಂಟ್ಗಳು ಜನರಿಗಿಂತ ಹೆಚ್ಚು ಮುಕ್ತವಾಗಿ ಮರುಪ್ರಯತ್ನಿಸುತ್ತವೆ.ಸರ್ವರ್ ಏನು ಮಾಡುತ್ತದೆ ಎಂಬುದರ ಅಂಚುಗಳು ಇವು. ಎರಡು ವಿಷಯಗಳು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಇವುಗಳ ಹೊರಗೆ ಇವೆ.
ಸರ್ವರ್ನಲ್ಲಿ ಯಾವುದೇ ಪಠ್ಯವನ್ನು ಭಾಷಣವಾಗಿ ಪರಿವರ್ತಿಸುವ ಟೂಲ್ ಇಲ್ಲ, ಮತ್ತು ಒಂದನ್ನು ಯೋಜಿಸಲಾಗಿಲ್ಲ. VocalStack ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಮತ್ತು ಅವುಗಳ ಅನುವಾದಗಳನ್ನು ಸಿದ್ಧ ಅಥವಾ ಕ್ಲೋನ್ ಮಾಡಿದ ಧ್ವನಿಯಲ್ಲಿ ಓದುತ್ತದೆ, ಬೇರೆ ಏನನ್ನೂ ಅಲ್ಲ. list_voices ಏಜೆಂಟ್ಗೆ ಯಾವ ಧ್ವನಿಗಳು ಒಂದು ಭಾಷೆಯಲ್ಲಿ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಟ್ ಓದಬಲ್ಲವು ಎಂದು ಹೇಳುತ್ತದೆ, ಧ್ವನಿಗೆ ಹೊಸದನ್ನು ಹೇಳಿಸುವ ಬಗೆ ಅಲ್ಲ.
ಟ್ರಾನ್ಸ್ಕ್ರೈಬ್ ಟೂಲ್ಗಳು ಲೈವ್ ಸ್ಟ್ರೀಮ್ಗಳನ್ನು ಸಹ ನಿರಾಕರಿಸುತ್ತವೆ. YouTube ಲೈವ್ ಸ್ಟ್ರೀಮ್ ಅಥವಾ ರೇಡಿಯೊ ಸ್ಟ್ರೀಮ್ಗೆ ಲೈವ್ ಟ್ರಾನ್ಸ್ಕ್ರಿಪ್ಷನ್ ಬೇಕು, ಅದನ್ನು ಡ್ಯಾಶ್ಬೋರ್ಡ್ನಿಂದ ಅಥವಾ API ಉಲ್ಲೇಖ ನಲ್ಲಿರುವ POST /v1/transcriptions/live ಮೂಲಕ ಪ್ರಾರಂಭಿಸಬೇಕು. ಮುಗಿದ YouTube ವೀಡಿಯೊ ಒಂದು ಫೈಲ್, ಮತ್ತು transcribe_url ಅದನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ.
ನೀವೇ ಕೋಡ್ ಬರೆಯಲು ಬಯಸಿದರೆ, API ಮೂಲಕ ಫೈಲ್ ಟ್ರಾನ್ಸ್ಕ್ರೈಬ್ ಮಾಡುವುದು ಅದೇ ಹಂತಗಳನ್ನು HTTP ಕರೆಗಳಾಗಿ ವಿವರಿಸುತ್ತದೆ, ಮತ್ತು ರಿಯಲ್-ಟೈಮ್ ಟ್ಯುಟೋರಿಯಲ್ WebSocket ಅನ್ನು ವಿವರಿಸುತ್ತದೆ.