exobrain-harness (BaesTheorem/exobrain-harness) is an MCP server listed on the M8ven Trust Index. It scores 37 out of 100, grade F. It declares 20 tools. No publisher has claimed this listing.

F
Warning
37/100

exobrain-harness

A self-hosted AI exobrain. Claude Code plus 50+ skills, launchd watchers, and MCP servers, pulling voice transcripts, handwritten notes, calendar, tasks, and health data into one place so I stop losing track of things.

Warning. Serious findings were identified. Review the full report before connecting. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

Code Verified⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

BaesTheorem

Source: github_repo_search

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
🚨
Reads files from sensitive locations
Touches: ~/.claude/channels/discord/.env
🔐
You'll be asked for 8 credentials: FITBIT_CLIENT_SECRET, MYKCMO_SOCRATA_APP_TOKEN, GOOGLE_OAUTH_CLIENT_SECRET, HF_TOKEN, HUGGINGFACE_TOKEN, TWILIO_AUTH_TOKEN, UINTERACT_PASSWORD, AMI_PLAY_PASSWORD
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes20 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

get_heart_rate
get_heart_rate_by_date_range
get_food_log
get_nutrition
get_nutrition_by_date_range
get_temp_skin_by_date_range

Get nightly skin temperature variation (relative to a personal baseline, in °C) from Fitbit for a date range. Returns one entry per night where data was recorded. Useful for illness early-detection — illness elevates nightly skin temp +0.2°C / +0.4°F or more, while stress/anxiety does not. Requires

get_breathing_rate_by_date_range

Get nightly average breathing rate (breaths per minute, full sleep + by sleep stage) from Fitbit for a date range. Useful as an illness confirmer — respiratory illness elevates breathing rate. Requires 'startDate' and 'endDate' (YYYY-MM-DD). Max range 30 days.

get_hrv_by_date_range

Get nightly heart rate variability (HRV) from Fitbit for a date range. Both stress and illness lower HRV, so this is best used alongside skin temp / RHR / breathing rate for triangulation. Requires 'startDate' and 'endDate' (YYYY-MM-DD). Max range 30 days.

get_spo2_by_date_range

Get nightly average SpO2 (blood oxygen saturation, %) from Fitbit for a date range. Drops during respiratory illness and sleep apnea. Requires 'startDate' and 'endDate' (YYYY-MM-DD). Max range 30 days.

search_311_requests

Search Kansas City 311 service requests (March 2021 - present).

get_311_request

Look up a 311 request by its case number (the number given when a request is filed, e.g. from the myKCMO app) or by work-order number. Returns the full record(s) including status, dates, and department.

get_311_requests

Look up several 311 requests at once by case or work-order number. Returns a map of the number you asked for to its record(s); a number with no match maps to an empty list (usually means it is newer than the feed's 2-7 day lag).

nearby_311_requests

List 311 requests near a point (defaults to MYKCMO_HOME_LAT/LON env vars if coordinates are omitted). radius_m is meters. Useful for "what's reported near me / near this address" once you have coordinates.

kc_311_stats

Aggregate counts of 311 requests. group_by is one of: issue_type, issue_sub_type, current_status, department_work_group, council_district, report_source, source_category. Dates are YYYY-MM-DD.

list_311_issue_types

List the distinct issue types and sub-types used since a date (YYYY-MM-DD), with counts. Use this to find the right issue_type filter value before searching.

report_issue_info

How to actually file a new 311 request with Kansas City, MO. Filing is not automatable (the web form is captcha-gated on purpose); this returns the official channels and deep links to hand to the user.

list_report_categories

List the report types Kansas City accepts (pothole, illegal dumping, streetlights, etc.). Pass one of these to get_report_subtypes and prepare_311_report.

get_report_subtypes

For a report type (label like "A Pothole" or a raw "10871_x" value), return its sub-types, the template kind, whether a location/description is required, and any disclaimer text. Only "Standard" template types can be auto-filed here; custom "form_type" types need the app/web form.

prepare_311_report

Stage a real 311 request and fetch its captcha for MIST to read.

submit_311_report

File the report staged by prepare_311_report. This creates a REAL 311 case with Kansas City. Requires confirm=True (get Alex's OK first) and the captcha_answer MIST read from the prepared captcha image.

// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configFITBIT_CLIENT_ID
🔐 secretFITBIT_CLIENT_SECRET
🔐 secretMYKCMO_SOCRATA_APP_TOKEN
configMYKCMO_HOME_LAT
configMYKCMO_HOME_LON
configMYKCMO_CONTACT_FIRST
configMYKCMO_CONTACT_LAST
configMYKCMO_CONTACT_EMAIL
configMYKCMO_CONTACT_PHONE
configAGENT_MODEL
configVOICE_PIN
configPUBLIC_WS_URL
configTTS_PROVIDER
configTTS_VOICE
configMY_PHONE_NUMBER
configALLOWED_CALLERS
configGOOGLE_OAUTH_CREDENTIALS
configGOOGLE_CALENDAR_MCP_TOKEN_PATH
configMIST_TTS_URL
configMIST_STT_URL
configAPPSHELL_TITLE
configAPPSHELL_URL
configAPPSHELL_HEALTH
configAPPSHELL_LABEL
configAPPSHELL_PLIST
configAPPSHELL_LOG
configAPPSHELL_W
configAPPSHELL_H
configAPPSHELL_ICON
configEXOBRAIN_HARNESS_DIR
configBACKUP_STAGING_DIR
configBACKUP_DRIVE_FOLDER_NAME
configGOOGLE_OAUTH_CLIENT_ID
🔐 secretGOOGLE_OAUTH_CLIENT_SECRET
configBACKUP_SYNC_TIMEOUT_MIN
configKEEP_DAILY
configKEEP_WEEKLY
configKEEP_MONTHLY
configVOR_BIAS_STRENGTH
configIMESSAGE_DB
configDEVELOPER_DIR
configMEMWD_CHECK_SECS
configMEMWD_WARN_GB
configMEMWD_KILL_GB
configMEMWD_EMERGENCY_GB
configMEMWD_SWAP_WARN_GB
configMEMWD_SUSTAINED
configMEMWD_TOP_N
configMEMWD_WARN_THROTTLE
configMEMWD_AUTO_KILL
configMEMWD_EXPENDABLE_KILL_GB
configMEMWD_EXPENDABLE
configMEMWD_LOG_MAX
configMIST_MUSIC_SPACE
🔐 secretHF_TOKEN
🔐 secretHUGGINGFACE_TOKEN
configTWILIO_ACCOUNT_SID
🔐 secretTWILIO_AUTH_TOKEN
configTWILIO_FROM_NUMBER
configUINTERACT_USERNAME
🔐 secretUINTERACT_PASSWORD
🔐 secretAMI_PLAY_PASSWORD
configAMI_PLAY_SESSION
configIG_DEBUG
configKCURBEX_CALENDAR_ID
configMEETUP_COOKIE
configMIST_PORT
configPHONE_STT_MODEL
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

20/20 tools missing one or more hints — get_heart_rate (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_heart_rate_by_date_range (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_food_log (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +17 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Tool inputs are validated

16/20 tool handlers declare input schemas (80%)

Declare an inputSchema with zod/joi/yup on every tool definition.

Tool test coverage

Only 5/20 tools referenced in tests (25%)

Write tests that reference each tool by name so every tool has at least one test.

No access to sensitive paths

Reads sensitive paths: ~/.claude/channels/discord/.env

Remove reads of sensitive system paths. If you genuinely need them, document why in the README.

Secrets not logged

2 secret values sent to print

Redact or omit secret values from log output.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 6 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/baestheorem/exobrain-harness?variant=verified)](https://m8ven.ai/mcp/baestheorem/exobrain-harness)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 41d284fa638996505a60c4a5f2f6b29e1f457a30
code hash: 2be616157ac4ec1809ed4626919712abebe3dcc2197b938f4ff8983a0c657e17
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client