{"serverInfo":{"name":"openpulse","version":"1.0.0","title":"Openpulse","description":"Read a workspace's buying signals, listeners, runs and roll-ups. Openpulse watches public conversations and job postings for evidence that a company has a budgeted problem.","documentationUrl":"https://openpulse.cloud/api.md"},"transport":{"type":"streamable-http","endpoint":"https://openpulse.cloud/mcp"},"capabilities":{"tools":true,"resources":false,"prompts":false},"tools":[{"name":"list_workspaces","description":"Lists the workspaces the authenticated user belongs to, with their role in each.","whenToUse":"First, in every session. Every other tool needs a workspace_id and there is no other way to obtain one."},{"name":"list_listeners","description":"Lists the listeners in a workspace: what each one watches, its mode, status, sources and signal count.","whenToUse":"Second, after list_workspaces. A listener is one saved search, and its `mode` decides how to read everything underneath it."},{"name":"get_listener","description":"Full configuration for one listener, including its search plan, keywords and mode-specific profile.","whenToUse":"When you need to explain or critique *why* a listener finds what it finds: the keywords, the excluded terms, the rivals or target roles it was built around."},{"name":"search_signals","description":"Searches kept signals across a workspace, or within one listener.","whenToUse":"When you want the individual posts, postings or reviews: the raw evidence, quotes, and links to reply to."},{"name":"get_rollup","description":"One row per entity: competitors with complaint counts and trend, or local businesses with their complaint themes and strongest quote.","whenToUse":"Default to this for any question shaped like 'who should we contact' or 'which competitor is vulnerable'. It is the row a salesperson acts on; search_signals is the evidence underneath it."},{"name":"list_runs","description":"Recent listener runs with status, what was searched and what was kept.","whenToUse":"Before concluding there is nothing to find. An empty signal list because the last three runs failed is a very different answer from a quiet market."},{"name":"get_quality_report","description":"Per-query and per-source yield for a listener, plus why candidates were rejected.","whenToUse":"To diagnose a listener that returns too little or too much. This is the evidence for changing its plan."},{"name":"rate_signal","description":"Marks a signal good or bad.","whenToUse":"When the user judges a signal right or wrong. This is not cosmetic: labelled examples are inlined into that listener's next classification prompts as calibration."},{"name":"list_content_ideas","description":"Content topics derived from what this workspace's listeners actually heard, with the evidence behind each.","whenToUse":"Whenever the user asks what to write about, what their customers are complaining about, or what a post should cover. These are grounded in real posts; answering from your own guesses instead wastes the only thing this workspace has that a generic writing assistant does not."},{"name":"get_content_drafts","description":"The drafts written for one idea, one per channel, with the checks that ran on them.","whenToUse":"Before offering to generate anything: the drafts may already exist. Also when the user asks to review, summarise or improve something already written."},{"name":"generate_content","description":"Writes drafts for an idea, one per channel requested.","whenToUse":"Only when the user has asked for it. This spends the workspace's monthly content allowance, one piece per channel, and takes minutes per channel."},{"name":"trigger_run","description":"Queues an immediate run for a listener, outside its schedule.","whenToUse":"Rarely. Only when the listener's plan has just changed, or its last run failed. Listeners already run on a schedule."}],"authentication":{"type":"oauth2","protectedResourceMetadata":"https://openpulse.cloud/.well-known/oauth-protected-resource/mcp"}}