ginlix-ai/alternative-data
v1.0.0Apache-2.0
Signals from outside the market tape. X post search back to 2006 with profiles and reply threads, and web scraping with anti-bot bypass that returns markdown rather than raw HTML.
commands
- uv
- uv
plugin.json
- name
- alternative-data
- version
- 1.0.0
- description
- Signals from outside the market tape. X post search back to 2006 with profiles and reply threads, and web scraping with anti-bot bypass that returns markdown rather than raw HTML.
- author
- LangAlphahttps://langalpha.ai
- license
- Apache-2.0
- homepage
- https://langalpha.ai
- repository
- https://github.com/ginlix/langalpha
- extensions
- ai.langalpha
mcp.json
- x_apistdiouv run python plugins/alternative_data/x_mcp_server.py
- scrapestdiouv run python plugins/alternative_data/scrape_mcp_server.py
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "alternative-data",
"version": "1.0.0",
"description": "Signals from outside the market tape. X post search back to 2006 with profiles and reply threads, and web scraping with anti-bot bypass that returns markdown rather than raw HTML.",
"author": {
"name": "LangAlpha",
"url": "https://langalpha.ai"
},
"homepage": "https://langalpha.ai",
"repository": "https://github.com/ginlix/langalpha",
"license": "Apache-2.0",
"keywords": [
"alternative-data",
"social-sentiment",
"web-scraping",
"x",
"twitter"
],
"extensions": {
"ai.langalpha": {
"servers": {
"x_api": {
"description": "Search X (Twitter) posts and fetch users, tweets, and reply threads. Read-only.",
"instruction": "Use for X/Twitter search and thread retrieval. Tools: search_posts, search_all_posts, get_conversation, get_user_by_username, get_tweet_by_id. For a single known X post URL, prefer web_fetch; reserve these tools for search, aggregation, and thread traversal. Every call needs bearer_token from the vault: `from vault import get; token = get(\"X_BEARER_TOKEN\")`. Prefer search_posts by default; reach for search_all_posts only when the user needs posts older than ~7 days. See skills/x-api/ for usage and errors.",
"tool_exposure_mode": "summary",
"icon": "x.com",
"vault_blueprints": [
{
"name": "X_BEARER_TOKEN",
"label": "X (Twitter) Bearer Token",
"description": "Read-only access for the X connector. Get one at console.x.com → App → Keys and tokens → Bearer Token. Paste the token alone, without the 'Bearer ' prefix or spaces.",
"docs_url": "https://console.x.com/",
"regex": "^[A-Za-z0-9%_-]{20,}$"
}
]
},
"scrape": {
"description": "Web scraping with anti-bot bypass and markdown extraction",
"instruction": "Use scrape_page for one URL, scrape_pages for batches. Start with mode='fast'; use 'browser' for JS-rendered pages, 'stealth' for bot-protected sites (add solve_cloudflare=true if still blocked). extraction: markdown|html|text.",
"tool_exposure_mode": "summary",
"icon": "https://raw.githubusercontent.com/D4Vinci/Scrapling/e7ca95cc051757b0d8036d047a1c56980600d421/docs/assets/logo.png"
}
}
}
}
}
Client extensions
Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.
- ai.langalpha