{"url_pattern":"^https?://(www\\.)?(twitter|x)\\.com/.*$","site_name":"twitter","allowed_domains":null,"tools":[{"name":"post_tweet","description":"Insert content into Twitter/X tweet composer","inputSchema":{"type":"object","properties":{"content":{"type":"string","description":"Tweet content (max 280 chars)"}},"required":["content"]},"handler":"(params) => {\n  const editor = document.querySelector('[data-testid=\"tweetTextarea_0\"]') || document.querySelector('[role=\"textbox\"]') || document.querySelector('.public-DraftEditor-content');\n  if (!editor) {\n    return { success: false, message: 'Tweet composer not found. Click the compose button first.' };\n  }\n  editor.focus();\n  // Use clipboard paste method\n  const dataTransfer = new DataTransfer();\n  dataTransfer.setData('text/plain', params.content);\n  const pasteEvent = new ClipboardEvent('paste', { bubbles: true, cancelable: true, clipboardData: dataTransfer });\n  editor.dispatchEvent(pasteEvent);\n  const charCount = params.content.length;\n  const warning = charCount > 280 ? ' (exceeds 280 char limit!)' : '';\n  return { success: true, message: 'Content inserted (' + charCount + '/280 chars)' + warning };\n}"},{"name":"open_compose","description":"Open the tweet compose dialog","inputSchema":{"type":"object","properties":{},"required":null},"handler":"() => {\n  const composeBtn = document.querySelector('[data-testid=\"SideNav_NewTweet_Button\"]') || document.querySelector('a[href=\"/compose/tweet\"]');\n  if (composeBtn) {\n    composeBtn.click();\n    return { success: true, message: 'Opening compose dialog...' };\n  }\n  window.location.href = 'https://twitter.com/compose/tweet';\n  return { success: true, message: 'Navigating to compose page...' };\n}"}]}