{"name":"io.github.i-ninte/grad-agent","slug":"i-ninte-grad-agent","title":"grad-agent","description":"Autonomous MCP agent for grad school applications: prof discovery, cold emails, SOP, tracking.","url":"https://mcp.market/server/i-ninte-grad-agent","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":31,"stars":4,"forks":1,"downloads_week":57,"last_push_at":"2026-09-25T16:00:13.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/i-ninte/grad-agent","website":null,"version":"0.2.9","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"grad-agent","version":"0.2.9","runtimeHint":"uvx","transport":{"type":"stdio"},"runtimeArguments":[{"isRequired":true,"value":"server","type":"positional"}],"environmentVariables":[{"description":"Anthropic API key used by Claude Haiku for hook synthesis and verification.","isRequired":true,"isSecret":true,"name":"ANTHROPIC_API_KEY"},{"description":"SMTP host for the review mailer.","isRequired":true,"default":"smtp.gmail.com","name":"SMTP_SERVER"},{"description":"SMTP port.","isRequired":true,"default":"587","name":"SMTP_PORT"},{"description":"SMTP username; used as From address by default.","isRequired":true,"name":"SMTP_USERNAME"},{"description":"SMTP password. Gmail App Password recommended.","isRequired":true,"isSecret":true,"name":"SMTP_PASSWORD"},{"description":"Envelope From address for drafts emailed to the user's review inbox.","isRequired":true,"name":"SMTP_FROM"},{"description":"Optional. Personal access token used to enumerate the user's public and private GitHub repos during catalog sync.","isSecret":true,"name":"GITHUB_TOKEN"},{"description":"Optional. HuggingFace token used to enumerate the user's published models and datasets during catalog sync.","isSecret":true,"name":"HF_TOKEN"},{"description":"Optional. Override the default ~/.grad-agent/ location for profile, programs, secrets, and data.","default":"~/.grad-agent","name":"GRAD_AGENT_HOME"},{"description":"Optional. Absolute path to a letterhead / company logo image (.png / .jpg / .pdf) embedded at the top of Letters of Recommendation during LaTeX compile. Leave unset for a plain top block. Can also be set at runtime via the `set_letterhead` MCP tool.","name":"LOR_LETTERHEAD_PATH"},{"description":"Optional. LaTeX length for the letterhead image width (e.g. '2.5in'). Used only when LOR_LETTERHEAD_PATH is set.","default":"2.2in","name":"LOR_LETTERHEAD_WIDTH"}]}],"tools":[{"name":"add_target","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"delete_post","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"discover_profs","description":"Fan out arXiv + OpenReview for recent papers in `area` (nlp|llm|ml|cv|ai4health|africa or raw query). Returns candidates with authors as prof leads.","write_action":false,"price_micros":0,"input_schema":null},{"name":"draft_article","description":"Draft a blog post. Requires blog.enabled: true in profile.yaml.","write_action":false,"price_micros":0,"input_schema":null},{"name":"draft_cold_email","description":"Draft a cold email. Saves to drafts/, returns preview + banned_hits.","write_action":true,"price_micros":0,"input_schema":null},{"name":"draft_sop","description":"Draft a Columbia-style SOP and compile to PDF. Returns {tex, pdf}.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_prof_page","description":"Web search for a professor's lab page / email.","write_action":false,"price_micros":0,"input_schema":null},{"name":"followups_due","description":"Profs emailed `days`+ ago with no reply and no nudge yet, each with a drafted follow-up ready to review and send.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_letterhead","description":"Return the currently configured letterhead settings from ~/.grad-agent/.env.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ingest_replies","description":"Read-only IMAP scan: detect professor replies and tag the outreach log. Needs IMAP creds in .env (defaults to Gmail + SMTP credentials).","write_action":false,"price_micros":0,"input_schema":null},{"name":"install_skills","description":"Symlink the bundled `lor-writing` and `sop-writing` skills into ~/.claude/skills/ so Claude Code / Claude Desktop pick them up.","write_action":false,"price_micros":0,"input_schema":null},{"name":"interview_prep","description":"Generate a one-page interview brief for a prof who replied: their recent papers summarised, likely questions, your talking points, questions to ask.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_pipeline","description":"status: '' (all) | new | drafted | sent | replied | rejected | silent","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_posts","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_programs","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_projects_in_catalog","description":"Return the current unified catalog (seed + synced).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_scholarships","description":"External scholarships from scholarships.yaml, optionally filtered by eligibility region (US, Canada, UK, EU, Asia, Africa, Australia).","write_action":false,"price_micros":0,"input_schema":null},{"name":"load_profile","description":"Load and cache CV + transcript. Call once per session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lor_add","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"lor_mark","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"lor_outstanding","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mark_status","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"outcome_report","description":"Response-rate report from your tagged outcomes: totals, by area, by project.","write_action":false,"price_micros":0,"input_schema":null},{"name":"outreach_log_view","description":"Show the last N rows of the outreach xlsx.","write_action":false,"price_micros":0,"input_schema":null},{"name":"outreach_mark_followup","description":"Record that you sent the follow-up nudge, so the prof is never nudged twice.","write_action":false,"price_micros":0,"input_schema":null},{"name":"outreach_mark_response","description":"Tag a prof's reply. outcome: positive | negative | no_response | interview. These tags feed the matcher: projects that earn replies rank up in future runs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"outreach_mark_sent","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"publish_article","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_daily_batch","description":"Run the daily outreach: pick n unseen profs in `area` (or today's rotation), match to your strongest project, draft dashless cold emails, log to xlsx, and email the batch to your review inbox.","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_program_batch","description":"Deadline-driven batch: verify + draft for faculty of one program from programs.yaml instead of arXiv discovery. Use before application deadlines.","write_action":true,"price_micros":0,"input_schema":null},{"name":"s2_cache_invalidate","description":"Selectively purge the Semantic Scholar cache. `query` matches author names and ids (substring). Use everything=True to wipe the whole cache. Use after a prof's S2 record changes (new affiliation, merged record).","write_action":false,"price_micros":0,"input_schema":null},{"name":"send_draft_to_me","description":"Emails the draft file to your inbox (NOTIFY_TO).","write_action":true,"price_micros":0,"input_schema":null},{"name":"set_letterhead","description":"Set (or clear) the letterhead / company logo used when compiling a Letter of Recommendation to LaTeX.","write_action":false,"price_micros":0,"input_schema":null},{"name":"skipped_log_view","description":"Audit trail of skipped leads: who was rejected, at which stage (identity / faculty-gate / region / dedup / no-papers), and the specific mismatch that failed (e.g. 'identity ambiguous: 2 comparable candidates').","write_action":false,"price_micros":0,"input_schema":null},{"name":"sync_catalog","description":"Extend the project catalog. source in {all, github, huggingface, local}.","write_action":false,"price_micros":0,"input_schema":null},{"name":"upcoming_deadlines","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"upcoming_scholarship_deadlines","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_article","description":"","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-25T17:19:53.252Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-25T17:19:53.215Z","components":{"code":{"score":25,"max":25,"notes":["40 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"grad-agent","version":"0.2.9","found":true,"weeklyDownloads":57,"license":"MIT","dependencyCount":13,"publishedAt":"2026-09-25T15:58:26.377965Z","repositoryUrl":"https://github.com/i-ninte/grad-agent"}],"repo":{"found":true,"owner":"i-ninte","repo":"grad-agent","archived":false,"pushedAt":"2026-09-25T16:00:13Z","stars":4,"forks":1,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/83280871?v=4","ownerCreatedAt":"2021-04-27T10:24:01Z"},"icon":{"url":"https://avatars.githubusercontent.com/u/83280871?v=4&s=128","source":"github"},"presence":{"stars":4,"forks":1,"downloadsWeek":57,"license":"MIT","lastPushAt":"2026-09-25T16:00:13.000Z","score":31}}}},"grade_history":[],"reviews":[]}