Repository avatar
Other Tools
v1.0.0
active

company-delta

io.github.joachimglassell-ship-it/company-delta

Detect material changes in public companies since a specified date using primary sources.

Documentation

machine-job-fishing-net

V0 experiment for machine-callable jobs and agent demand discovery

Company Delta A2A v1 experiment

The service publishes a minimal A2A 1.0 Agent Card at /.well-known/agent-card.json and accepts JSON-RPC at /a2a/company-delta. SendMessage starts a tracked Company Delta task and GetTask polls it. Discovery and polling never run the analysis engine.

Send structured input as an A2A data part:

{
  "jsonrpc": "2.0",
  "id": "request-1",
  "method": "SendMessage",
  "params": {
    "message": {
      "messageId": "message-1",
      "role": "ROLE_USER",
      "parts": [
        {"data": {"company": "Intel Corporation", "since": "2024-12-01"}}
      ]
    },
    "configuration": {"returnImmediately": true}
  }
}

Poll the returned task ID with GetTask. Completed output is an application/json artifact. Cost safeguards default to one concurrent A2A job and three accepted jobs per client IP per hour. Configure them with A2A_MAX_CONCURRENT_JOBS and A2A_RATE_LIMIT_PER_HOUR.

For controlled production verification, set A2A_INTERNAL_TEST_TOKEN and send its value only in the X-A2A-Test-Token header. This labels the traffic as internal in structured logs without logging the token.

Local setup and tests:

python -m venv .venv
.venv/Scripts/activate
python -m pip install -r requirements-dev.txt
set OPENAI_API_KEY=your-key
python -m pytest -q
uvicorn main:app --reload

The tests mock the costly OpenAI-backed analysis. A real Company Delta job requires OPENAI_API_KEY; never commit that value.

TSRE MCP server

The service exposes one free MCP tool over the standard Streamable HTTP transport:

  • Endpoint: https://machine-job-fishing-net.onrender.com/mcp/
  • Tool: get_sweden_market_intelligence
  • Input: none
  • Output: the latest structured TSRE Daily Investment Desk from feeds/tsre_daily.json

The feed includes Swedish equity market regime, breadth, sector rotation, RS20 candidates, Tactical Radar, data-quality information and the original research contract. It is research decision support, not autonomous investment advice, a buy/sell signal, or an order generator.

Connect any MCP client that supports Streamable HTTP to the endpoint above, then list and call the tool. For example, with the official Python SDK:

import asyncio
from mcp import Client


async def main():
    async with Client("https://machine-job-fishing-net.onrender.com/mcp/") as client:
        tools = await client.list_tools()
        result = await client.call_tool("get_sweden_market_intelligence", {})
        print(result.structured_content)


asyncio.run(main())