Anweshna Risk Screening

Screen M&A deal documents for red flags across 15 risk categories; findings checked against source.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
63%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~919Tokens (tool definitions)
~1.5 KBTypical response size
Moderate attention impact (0.72% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "risk-screening": {
      "url": "https://anweshna.com/mcp/"
    }
  }
}

Remote endpoints

https://anweshna.com/mcp/streamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡screen_document(title, content_base64, text, filename, document_type, ...)

Upload a deal document and score it for risk across 15 categories. Returns the overall score, rating, whether the deal is flagged as blocked, and per-category findings. Provide the file either as 'content_base64' (PDF, DOCX, TXT or CSV) or as plain 'text'. The whole call must stay under 32 MB, and base64 adds about a third, so the document itself should be under roughly 24 MB — a larger one is rejected by the transport before this tool runs, which surfaces as a bare HTTP 413 rather than a normal tool error. Use the REST upload endpoint for anything bigger.

Input Schema

{
  "type": "object",
  "properties": {
    "title": {
      "title": "Title",
      "type": "string"
    },
    "content_base64": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Content Base64"
    },
    "text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Text"
    },
    "filename": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Filename"
    },
    "document_type": {
      "default": "Report",
      "title": "Document Type",
      "type": "string"
    },
    "deal_room_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Deal Room Id"
    },
    "industry": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Industry"
    },
    "engine": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Engine"
    },
    "force_precision": {
      "default": false,
      "title": "Force Precision",
      "type": "boolean"
    }
  },
  "required": [
    "title"
  ],
  "title": "screen_documentArguments"
}
🟢get_analysis(document_id)

Retrieve the stored risk analysis for a document already screened by this account. Read-only.

Input Schema

{
  "type": "object",
  "properties": {
    "document_id": {
      "title": "Document Id",
      "type": "string"
    }
  },
  "required": [
    "document_id"
  ],
  "title": "get_analysisArguments"
}
🟡bulk_screen(documents, bulk_job_id, deal_room_id, document_type, industry, ...)

Upload up to 25 documents and screen them as one batch. Waits for text extraction, then starts scoring and returns job ids; poll get_bulk_status until the batch is finished. Each item is {title, content_base64 | text, filename?}. The 25-document limit is not the binding one for large files: the whole call must stay under 32 MB including base64 overhead, so send fewer, larger documents per batch rather than filling all 25 slots. Exceeding it is a bare HTTP 413 from the transport, before this tool runs. To RESUME a batch that was uploaded but not scored — this tool timed out waiting for extraction, or scoring failed to start — call it again with 'bulk_job_id' instead of 'documents'. That re-uses the existing upload and does NOT spend the account's quota a second time. If the batch is rejected because one or more documents are too large for the plan's scan engine, retry with force_precision=true to scan those documents truncated to the recall window (coverage beyond it is excluded).

Input Schema

{
  "type": "object",
  "properties": {
    "documents": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Documents"
    },
    "bulk_job_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Bulk Job Id"
    },
    "deal_room_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Deal Room Id"
    },
    "document_type": {
      "default": "Report",
      "title": "Document Type",
      "type": "string"
    },
    "industry": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Industry"
    },
    "engine": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Engine"
    },
    "force_precision": {
      "default": false,
      "title": "Force Precision",
      "type": "boolean"
    }
  },
  "title": "bulk_screenArguments"
}
🟡get_bulk_status(upload_job_id, analyze_job_id)

Check progress of a batch started by bulk_screen. Pass the upload_job_id, the analyze_job_id, or both.

Input Schema

{
  "type": "object",
  "properties": {
    "upload_job_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Upload Job Id"
    },
    "analyze_job_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Analyze Job Id"
    }
  },
  "title": "get_bulk_statusArguments"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools