Repository navigation
feat(agentic): screen applicants blind through an MCP server - #27
Merged
Merged
Conversation
… identity A job-specific MCP server (streamable HTTP, bearer token) wraps LightOnOCR, pii-redact and Qwen3-Reranker on SIE and returns only masked resume text. A Claude Agent SDK client gives Claude no built-in tools, checks every quoted verdict and the decision rules, and checks nothing Claude saw names the applicant. 6 of 7 applicants as expected across three live runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rparundekar
force-pushed
the
feat/agentic-mcp-server
branch
from
November 9, 2026 23:10
23bb6a6 to
12df1cf
Compare
Collaborator
Author
Self-ReviewSix passes ran on the rebased head 12df1cf: code, silent failures, tests, comments, types and security. Critical (3)
Important (9)
Suggestions (11)
Strengths
Generated using wayfare. |
- Leak check: decode tool results before matching, fold accents and quotes, and check every applicant's record, so a name at the start of a line or with an accent is found. Re-ran it over all saved transcripts: no leaks. - Server tool errors no longer carry the SIE message, which can echo raw resume text; the full message goes to server.log only. - Quotes are checked against the screened applicant's resume only; one verdict per must-have; cost uses the session's running total; a refusal stops the run only from an error result. - Server lifecycle: check it is alive before each applicant, kill it if it does not stop in 10 s, close the log handle; health() catches bad replies; out_of_turns status. - OCR keeps every markdown entity; pii-redact spans must match their text; require_token guards every scope but lifespan; Calls is locked. - Raise the CLI's MCP tool timeout to agent.tool_wait_s, since a cold OCR read can take longer than its 300 s default. - selfcheck: token check, masking windows and offsets, the fail-closed store, decision and leak cases, outputs. - Docs: correct what leaves the server, the decision-rule location, the Sonnet row and other README and docstring claims. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
Self-Review: ImprovementsCritical (3 / 3 fixed):
Important (9 / 9 fixed):
Suggestions (10 / 11 fixed):
Skipped:
Also found while re-running: the Claude Code CLI aborts an MCP tool call after 300 s, shorter than a cold OCR start. recipe.py now sets CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT from agent.tool_wait_s (960 s). Live run after the fixes: same seven statuses, 6 of 7 as expected, no leaks. Commits: 09cc783 Generated using wayfare. |
rparundekar
marked this pull request as ready for review
November 9, 2026 23:31
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
New agentic recipe,
agentic/screen_applicants_through_mcp_server: a blind first pass over applicants for a commercial HVAC technician role at a made-up facilities company.server.pyis an MCP server built for this one job. It runs over streamable HTTP and needs a bearer token. Its tools areget_role,list_applicants,read_resume,find_evidenceandsearch_applicants.recipe.pyis a Claude Agent SDK client.submit_decision. The run ignores the reader's own MCP servers and settings.sie-mcpserver, for the general document case.Results
Four live runs using SIE Serverless on 9 Nov 2026: three before the self-review and one after. All four gave 6 of 7 applicants as expected, the same each time, with no identity leaks.
Self-review
All six passes ran: code, silent failures, tests, comments, types and security. The fixes are in 09cc783. The two that matter most:
The details are in the PR comments.
Checks
uvx ruff check . && uvx ruff format --check .mypy --strictuv run selfcheck.pytools/check_tree.py, pre-commitRelated: superlinked/sie#936 fixes the sie-mcp issues found while checking whether to use it here. This PR doesn't depend on it.
🤖 Generated with Claude Code
Generated using wayfare.