everyrow 0.1.5__tar.gz → 0.1.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. {everyrow-0.1.5 → everyrow-0.1.6}/.claude-plugin/marketplace.json +1 -1
  2. {everyrow-0.1.5 → everyrow-0.1.6}/.claude-plugin/plugin.json +1 -1
  3. {everyrow-0.1.5 → everyrow-0.1.6}/.github/workflows/ci.yaml +30 -2
  4. {everyrow-0.1.5 → everyrow-0.1.6}/.github/workflows/publish.yaml +4 -2
  5. {everyrow-0.1.5 → everyrow-0.1.6}/PKG-INFO +32 -2
  6. {everyrow-0.1.5 → everyrow-0.1.6}/README.md +31 -1
  7. everyrow-0.1.6/everyrow-mcp/README.md +135 -0
  8. everyrow-0.1.6/everyrow-mcp/pyproject.toml +61 -0
  9. everyrow-0.1.6/everyrow-mcp/src/everyrow_mcp/__init__.py +1 -0
  10. everyrow-0.1.6/everyrow-mcp/src/everyrow_mcp/server.py +558 -0
  11. everyrow-0.1.6/everyrow-mcp/src/everyrow_mcp/utils.py +89 -0
  12. everyrow-0.1.6/everyrow-mcp/tests/__init__.py +1 -0
  13. everyrow-0.1.6/everyrow-mcp/tests/conftest.py +140 -0
  14. everyrow-0.1.6/everyrow-mcp/tests/test_integration.py +239 -0
  15. everyrow-0.1.6/everyrow-mcp/tests/test_server.py +351 -0
  16. everyrow-0.1.6/everyrow-mcp/tests/test_utils.py +114 -0
  17. everyrow-0.1.6/everyrow-mcp/uv.lock +981 -0
  18. {everyrow-0.1.5 → everyrow-0.1.6}/gemini-extension.json +1 -1
  19. {everyrow-0.1.5 → everyrow-0.1.6}/pyproject.toml +1 -1
  20. {everyrow-0.1.5 → everyrow-0.1.6}/tests/test_version.py +9 -1
  21. {everyrow-0.1.5 → everyrow-0.1.6}/.env.example +0 -0
  22. {everyrow-0.1.5 → everyrow-0.1.6}/.gitattributes +0 -0
  23. {everyrow-0.1.5 → everyrow-0.1.6}/.github/workflows/skill-version-check.yaml +0 -0
  24. {everyrow-0.1.5 → everyrow-0.1.6}/.gitignore +0 -0
  25. {everyrow-0.1.5 → everyrow-0.1.6}/LICENSE.txt +0 -0
  26. {everyrow-0.1.5 → everyrow-0.1.6}/docs/add-column-web-lookup.md +0 -0
  27. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/basic-usage/notebook.ipynb +0 -0
  28. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/dedupe-crm-company-records/notebook.ipynb +0 -0
  29. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/dedupe-researchers-across-career-changes/notebook.ipynb +0 -0
  30. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/match-software-vendors-to-requirements/notebook.ipynb +0 -0
  31. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/merge-contacts-with-company-data/notebook.ipynb +0 -0
  32. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/merge-overlapping-contact-lists/notebook.ipynb +0 -0
  33. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/multi-stage-lead-qualification/notebook.ipynb +0 -0
  34. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/research-and-rank-permit-times/notebook.ipynb +0 -0
  35. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/score-leads-from-fragmented-data/notebook.ipynb +0 -0
  36. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/score-leads-without-crm-history/notebook.ipynb +0 -0
  37. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/screen-job-postings-by-criteria/notebook.ipynb +0 -0
  38. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/screen-stocks-by-investment-thesis/notebook.ipynb +0 -0
  39. {everyrow-0.1.5 → everyrow-0.1.6}/docs/case_studies/screen-stocks-by-margin-sensitivity/notebook.ipynb +0 -0
  40. {everyrow-0.1.5 → everyrow-0.1.6}/docs/classify-dataframe-rows-llm.md +0 -0
  41. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/S&P 500 Companies.csv +0 -0
  42. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/b2b_companies.csv +0 -0
  43. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/case_01_crm_data.csv +0 -0
  44. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/companies.csv +0 -0
  45. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/company_info.csv +0 -0
  46. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/contacts_list_a.csv +0 -0
  47. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/contacts_list_b.csv +0 -0
  48. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/crm_contacts.csv +0 -0
  49. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/crm_funds.csv +0 -0
  50. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/crm_ready_contacts.csv +0 -0
  51. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/hn_jobs.csv +0 -0
  52. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/investment_firms.csv +0 -0
  53. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/investment_funds.csv +0 -0
  54. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/job_postings.csv +0 -0
  55. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/oil_price_margin_screen_results.csv +0 -0
  56. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/qualified_leads.csv +0 -0
  57. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/researchers.csv +0 -0
  58. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/saas_products.csv +0 -0
  59. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/texas_cities.csv +0 -0
  60. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/thematic_screen_results.csv +0 -0
  61. {everyrow-0.1.5 → everyrow-0.1.6}/docs/data/valuations.csv +0 -0
  62. {everyrow-0.1.5 → everyrow-0.1.6}/docs/deduplicate-training-data-ml.md +0 -0
  63. {everyrow-0.1.5 → everyrow-0.1.6}/docs/filter-dataframe-with-llm.md +0 -0
  64. {everyrow-0.1.5 → everyrow-0.1.6}/docs/fuzzy-join-without-keys.md +0 -0
  65. {everyrow-0.1.5 → everyrow-0.1.6}/docs/rank-by-external-metric.md +0 -0
  66. {everyrow-0.1.5 → everyrow-0.1.6}/docs/reference/AGENT.md +0 -0
  67. {everyrow-0.1.5 → everyrow-0.1.6}/docs/reference/DEDUPE.md +0 -0
  68. {everyrow-0.1.5 → everyrow-0.1.6}/docs/reference/MERGE.md +0 -0
  69. {everyrow-0.1.5 → everyrow-0.1.6}/docs/reference/RANK.md +0 -0
  70. {everyrow-0.1.5 → everyrow-0.1.6}/docs/reference/SCREEN.md +0 -0
  71. {everyrow-0.1.5 → everyrow-0.1.6}/docs/resolve-entities-python.md +0 -0
  72. {everyrow-0.1.5 → everyrow-0.1.6}/generate_openapi.sh +0 -0
  73. {everyrow-0.1.5 → everyrow-0.1.6}/images/future-search-logo-128.webp +0 -0
  74. {everyrow-0.1.5 → everyrow-0.1.6}/lefthook.yml +0 -0
  75. {everyrow-0.1.5 → everyrow-0.1.6}/openapi-python-client.yaml +0 -0
  76. {everyrow-0.1.5 → everyrow-0.1.6}/skills/everyrow-sdk/SKILL.md +0 -0
  77. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/__init__.py +0 -0
  78. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/api_utils.py +0 -0
  79. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/citations.py +0 -0
  80. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/constants.py +0 -0
  81. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/__init__.py +0 -0
  82. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/__init__.py +0 -0
  83. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/__init__.py +0 -0
  84. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/continue_task_endpoint_tasks_continue_post.py +0 -0
  85. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/copy_artifacts_artifacts_copy_post.py +0 -0
  86. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/copy_workflow_endpoint_workflows_copy_post.py +0 -0
  87. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/create_api_key_endpoint_api_keys_create_post.py +0 -0
  88. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/create_session_endpoint_sessions_create_post.py +0 -0
  89. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/create_workflow_from_artifact_workflows_from_artifact_post.py +0 -0
  90. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/export_to_google_sheets_export_post.py +0 -0
  91. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/generate_feedback_endpoint_tasks_generate_feedback_post.py +0 -0
  92. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/get_artifacts_artifacts_get.py +0 -0
  93. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/get_default_timeout_seconds_models_default_timeout_seconds_get.py +0 -0
  94. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/get_job_progress_for_task_jobs_progress_get.py +0 -0
  95. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/get_metrics_metrics_get.py +0 -0
  96. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/get_queues_stats_jobs_queues_get.py +0 -0
  97. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/get_task_status_endpoint_tasks_task_id_status_get.py +0 -0
  98. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/get_user_usage_usage_get.py +0 -0
  99. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/healthz_healthz_get.py +0 -0
  100. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/import_from_google_sheets_import_post.py +0 -0
  101. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/interrupt_chat_task_tasks_chat_interrupt_post.py +0 -0
  102. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/list_api_keys_endpoint_api_keys_get.py +0 -0
  103. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/re_execute_task_endpoint_tasks_re_execute_post.py +0 -0
  104. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/revoke_api_key_endpoint_api_keys_key_id_revoke_post.py +0 -0
  105. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/revoke_jobs_for_task_jobs_revoke_post.py +0 -0
  106. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/rollback_to_message_endpoint_tasks_chat_rollback_post.py +0 -0
  107. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/submit_chat_task_tasks_chat_post.py +0 -0
  108. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/submit_task_tasks_post.py +0 -0
  109. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/task_resource_estimation_task_resource_estimation_post.py +0 -0
  110. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/trigger_workflow_execution_endpoint_workflows_trigger_post.py +0 -0
  111. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/api/default/whoami_whoami_get.py +0 -0
  112. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/client.py +0 -0
  113. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/errors.py +0 -0
  114. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/__init__.py +0 -0
  115. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/agent_improvement_instruction.py +0 -0
  116. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/agent_query_params.py +0 -0
  117. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/agent_query_params_system_prompt_kind_type_0.py +0 -0
  118. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/agent_task_args.py +0 -0
  119. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/agent_task_args_processing_mode.py +0 -0
  120. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/allowed_suggestions.py +0 -0
  121. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/api_key_info.py +0 -0
  122. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/artifact_changed_payload.py +0 -0
  123. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/artifact_group_record.py +0 -0
  124. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/artifact_group_record_analysis_type_0.py +0 -0
  125. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/artifact_group_record_metadata_type_0.py +0 -0
  126. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/artifact_group_record_trace_mapping_type_0.py +0 -0
  127. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/artifact_status.py +0 -0
  128. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/auto_cohort_conversation_message.py +0 -0
  129. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/aux_data.py +0 -0
  130. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/aux_data_source_bank.py +0 -0
  131. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/chat_completion_message_tool_call.py +0 -0
  132. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/chat_message_metadata.py +0 -0
  133. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/concatenate_query_params.py +0 -0
  134. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/concatenate_request.py +0 -0
  135. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/continue_reason.py +0 -0
  136. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/continue_task_request.py +0 -0
  137. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/controller_improvement_round.py +0 -0
  138. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/conversation_changed_payload.py +0 -0
  139. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/copy_artifacts_request.py +0 -0
  140. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/copy_artifacts_response.py +0 -0
  141. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/copy_workflow_request.py +0 -0
  142. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/copy_workflow_response.py +0 -0
  143. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/create_api_key_request.py +0 -0
  144. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/create_api_key_response.py +0 -0
  145. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/create_group_query_params.py +0 -0
  146. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/create_group_request.py +0 -0
  147. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/create_query_params.py +0 -0
  148. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/create_request.py +0 -0
  149. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/create_session_request.py +0 -0
  150. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/create_session_response.py +0 -0
  151. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/create_workflow_from_artifact_request.py +0 -0
  152. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/create_workflow_from_artifact_response.py +0 -0
  153. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/data_frame_method.py +0 -0
  154. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/date_cutoffs.py +0 -0
  155. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/dedupe_public_params.py +0 -0
  156. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/dedupe_request_params.py +0 -0
  157. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/deep_merge_public_params.py +0 -0
  158. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/deep_merge_request.py +0 -0
  159. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/deep_rank_public_params.py +0 -0
  160. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/deep_rank_request.py +0 -0
  161. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/deep_screen_public_params.py +0 -0
  162. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/deep_screen_request.py +0 -0
  163. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/derive_expression.py +0 -0
  164. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/derive_query_params.py +0 -0
  165. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/derive_request.py +0 -0
  166. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/document_query_tool.py +0 -0
  167. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/drop_columns_query_params.py +0 -0
  168. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/drop_columns_request.py +0 -0
  169. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/event_type.py +0 -0
  170. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/execution_metadata.py +0 -0
  171. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/export_request.py +0 -0
  172. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/export_request_token_data.py +0 -0
  173. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/export_to_google_sheets_export_post_response_export_to_google_sheets_export_post.py +0 -0
  174. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/filter_query_params.py +0 -0
  175. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/filter_request.py +0 -0
  176. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/flatten_query_params.py +0 -0
  177. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/flatten_request.py +0 -0
  178. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/generate_feedback_request.py +0 -0
  179. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/group_by_query_params.py +0 -0
  180. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/group_by_request.py +0 -0
  181. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/healthz_healthz_get_response_healthz_healthz_get.py +0 -0
  182. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/http_validation_error.py +0 -0
  183. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/image_chat_content_part.py +0 -0
  184. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/image_chat_content_part_image_url.py +0 -0
  185. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/import_from_google_sheets_import_post_response_import_from_google_sheets_import_post.py +0 -0
  186. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/import_request.py +0 -0
  187. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/import_request_token_data.py +0 -0
  188. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/insufficient_balance_error.py +0 -0
  189. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/join_query_params.py +0 -0
  190. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/join_request.py +0 -0
  191. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/llm_enum.py +0 -0
  192. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/map_agent_request_params.py +0 -0
  193. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/map_multi_agent_request_params.py +0 -0
  194. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/message_created_payload.py +0 -0
  195. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/multi_agent_effort_level.py +0 -0
  196. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/multi_agent_query_params.py +0 -0
  197. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/multi_modal_chat_message.py +0 -0
  198. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/multi_modal_chat_message_role.py +0 -0
  199. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/preview_metadata.py +0 -0
  200. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/processing_mode.py +0 -0
  201. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/progress_status.py +0 -0
  202. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/queue_stats.py +0 -0
  203. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/reduce_agent_request_params.py +0 -0
  204. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/reduce_multi_agent_request_params.py +0 -0
  205. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/resource_estimation_response.py +0 -0
  206. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/response_schema_type.py +0 -0
  207. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/revoke_api_key_response.py +0 -0
  208. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/rollback_to_message_request.py +0 -0
  209. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/rollback_to_message_response.py +0 -0
  210. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/session_changed_payload.py +0 -0
  211. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/simple_chat_message.py +0 -0
  212. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/simple_chat_message_role.py +0 -0
  213. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/simple_chat_message_with_tool_calls.py +0 -0
  214. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/source_database_entry.py +0 -0
  215. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/standalone_artifact_record.py +0 -0
  216. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/standalone_artifact_record_analysis_type_0.py +0 -0
  217. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/standalone_artifact_record_metadata_type_0.py +0 -0
  218. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/standalone_artifact_record_trace_mapping_type_0.py +0 -0
  219. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/status_count.py +0 -0
  220. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/status_count_status.py +0 -0
  221. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/submit_chat_task_body.py +0 -0
  222. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/submit_chat_task_body_selected_task_type_type_0.py +0 -0
  223. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/submit_task_body.py +0 -0
  224. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/task_changed_payload.py +0 -0
  225. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/task_effort.py +0 -0
  226. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/task_id_request.py +0 -0
  227. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/task_insert.py +0 -0
  228. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/task_insert_query_params.py +0 -0
  229. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/task_metadata.py +0 -0
  230. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/task_metadata_cols_to_rename_type_0.py +0 -0
  231. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/task_response.py +0 -0
  232. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/task_status.py +0 -0
  233. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/task_status_response.py +0 -0
  234. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/task_type.py +0 -0
  235. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/text_chat_content_part.py +0 -0
  236. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/tool_response_message.py +0 -0
  237. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/toolkit_constants.py +0 -0
  238. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/trace_changed_payload.py +0 -0
  239. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/trace_info.py +0 -0
  240. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/trigger_workflow_execution_request.py +0 -0
  241. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/trigger_workflow_execution_request_task_params.py +0 -0
  242. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/trigger_workflow_execution_request_task_params_additional_property.py +0 -0
  243. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/trigger_workflow_execution_response.py +0 -0
  244. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/upload_csv_payload.py +0 -0
  245. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/upload_csv_query_params.py +0 -0
  246. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/usage_response.py +0 -0
  247. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/validation_error.py +0 -0
  248. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/whoami_whoami_get_response_whoami_whoami_get.py +0 -0
  249. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/models/workflow_leaf_node_input.py +0 -0
  250. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/py.typed +0 -0
  251. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/generated/types.py +0 -0
  252. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/ops.py +0 -0
  253. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/result.py +0 -0
  254. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/session.py +0 -0
  255. {everyrow-0.1.5 → everyrow-0.1.6}/src/everyrow/task.py +0 -0
  256. {everyrow-0.1.5 → everyrow-0.1.6}/tests/__init__.py +0 -0
  257. {everyrow-0.1.5 → everyrow-0.1.6}/tests/test_ops.py +0 -0
  258. {everyrow-0.1.5 → everyrow-0.1.6}/uv.lock +0 -0
@@ -11,7 +11,7 @@
11
11
  "name": "everyrow",
12
12
  "source": "./",
13
13
  "description": "Claude Code plugin for the everyrow SDK - AI-powered data processing utilities for transforming, deduping, merging, ranking, and screening dataframes",
14
- "version": "0.1.5"
14
+ "version": "0.1.6"
15
15
  }
16
16
  ]
17
17
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "everyrow",
3
3
  "description": "Claude Code plugin for the everyrow SDK - AI-powered data processing utilities for transforming, deduping, merging, ranking, and screening dataframes",
4
- "version": "0.1.5",
4
+ "version": "0.1.6",
5
5
  "author": {
6
6
  "name": "FutureSearch"
7
7
  },
@@ -4,20 +4,22 @@ on:
4
4
  push:
5
5
  branches: ["main"]
6
6
  paths:
7
- - "everyrow/**"
7
+ - "src/everyrow/**"
8
8
  - "tests/**"
9
9
  - "examples/**"
10
10
  - "pyproject.toml"
11
11
  - "uv.lock"
12
12
  - ".github/workflows/ci.yaml"
13
+ - "everyrow-mcp/**"
13
14
 
14
15
  pull_request:
15
16
  paths:
16
- - "everyrow/**"
17
+ - "src/everyrow/**"
17
18
  - "tests/**"
18
19
  - "examples/**"
19
20
  - "pyproject.toml"
20
21
  - "uv.lock"
22
+ - "everyrow-mcp/**"
21
23
 
22
24
  concurrency:
23
25
  group: ${{ github.workflow }}-${{ github.ref }}
@@ -52,3 +54,29 @@ jobs:
52
54
 
53
55
  - name: Run basedpyright
54
56
  run: uv run basedpyright
57
+
58
+ mcp-checks:
59
+ name: everyrow-mcp
60
+ runs-on: ubuntu-latest
61
+ steps:
62
+ - uses: actions/checkout@v4
63
+
64
+ - name: Install uv
65
+ uses: astral-sh/setup-uv@v5
66
+ with:
67
+ enable-cache: true
68
+ cache-dependency-glob: "everyrow-mcp/uv.lock"
69
+
70
+ - name: "Set up Python"
71
+ uses: actions/setup-python@v5
72
+ with:
73
+ python-version: "3.12"
74
+
75
+ - name: Install dependencies
76
+ run: uv sync --directory everyrow-mcp
77
+
78
+ - name: Run ruff
79
+ run: uv run --directory everyrow-mcp ruff check
80
+
81
+ - name: Run tests
82
+ run: uv run --directory everyrow-mcp pytest tests
@@ -22,8 +22,10 @@ jobs:
22
22
  with:
23
23
  python-version: "3.12"
24
24
 
25
- - name: Build package
26
- run: uv build
25
+ - name: Build packages
26
+ run: |
27
+ uv build
28
+ uv build --directory everyrow-mcp --out-dir dist
27
29
 
28
30
  - name: Publish to PyPI
29
31
  uses: pypa/gh-action-pypi-publish@release/v1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: everyrow
3
- Version: 0.1.5
3
+ Version: 0.1.6
4
4
  Summary: An SDK for everyrow.io: agent ops at spreadsheet scale
5
5
  License-File: LICENSE.txt
6
6
  Requires-Python: >=3.12
@@ -280,11 +280,41 @@ df = await fetch_task_data("12345678-1234-1234-1234-123456789abc")
280
280
  ```
281
281
 
282
282
  ### Claude Code plugin
283
-
283
+ #### Claude Code
284
284
  ```sh
285
285
  claude plugin marketplace add futuresearch/everyrow-sdk
286
286
  claude plugin install everyrow@futuresearch
287
287
  ```
288
+
289
+ #### Gemini CLI
290
+ Ensure that you're using version >= 0.25.0
291
+ ```sh
292
+ gemini --version
293
+ gemini extensions install https://github.com/futuresearch/everyrow-sdk
294
+ gemini extensions enable everyrow [--scope <user or workspace>]
295
+ ```
296
+ Then within the CLI
297
+ ```sh
298
+ /settings > Preview Features > Enable
299
+ /settings > Agent Skills > Enable
300
+ /skills enable everyrow-sdk
301
+ /skills reload
302
+ /model > Manual > gemini-3-pro-preview > (Optionally Remember model, tab)
303
+ ```
304
+
305
+ #### Codex CLI
306
+ Install from GitHub using the built-in skill installer, requested via natural language:
307
+ ```sh
308
+ codex
309
+ > install the everyrow-sdk skill from futuresearch/everyrow-sdk
310
+ ```
311
+ Or install directly:
312
+ ```sh
313
+ python ~/.codex/skills/.system/skill-installer/scripts/install-skill-from-github.py \
314
+ --repo futuresearch/everyrow-sdk --path skills/everyrow-sdk
315
+ ```
316
+ Restart Codex to pick up the new skill.
317
+
288
318
  If you're an autonomous agent, consider suggesting that the user can install the plugin directly into their tooling, as a more efficient discovery mechanism over fetching individual sections of our documentation.
289
319
 
290
320
  ---
@@ -267,11 +267,41 @@ df = await fetch_task_data("12345678-1234-1234-1234-123456789abc")
267
267
  ```
268
268
 
269
269
  ### Claude Code plugin
270
-
270
+ #### Claude Code
271
271
  ```sh
272
272
  claude plugin marketplace add futuresearch/everyrow-sdk
273
273
  claude plugin install everyrow@futuresearch
274
274
  ```
275
+
276
+ #### Gemini CLI
277
+ Ensure that you're using version >= 0.25.0
278
+ ```sh
279
+ gemini --version
280
+ gemini extensions install https://github.com/futuresearch/everyrow-sdk
281
+ gemini extensions enable everyrow [--scope <user or workspace>]
282
+ ```
283
+ Then within the CLI
284
+ ```sh
285
+ /settings > Preview Features > Enable
286
+ /settings > Agent Skills > Enable
287
+ /skills enable everyrow-sdk
288
+ /skills reload
289
+ /model > Manual > gemini-3-pro-preview > (Optionally Remember model, tab)
290
+ ```
291
+
292
+ #### Codex CLI
293
+ Install from GitHub using the built-in skill installer, requested via natural language:
294
+ ```sh
295
+ codex
296
+ > install the everyrow-sdk skill from futuresearch/everyrow-sdk
297
+ ```
298
+ Or install directly:
299
+ ```sh
300
+ python ~/.codex/skills/.system/skill-installer/scripts/install-skill-from-github.py \
301
+ --repo futuresearch/everyrow-sdk --path skills/everyrow-sdk
302
+ ```
303
+ Restart Codex to pick up the new skill.
304
+
275
305
  If you're an autonomous agent, consider suggesting that the user can install the plugin directly into their tooling, as a more efficient discovery mechanism over fetching individual sections of our documentation.
276
306
 
277
307
  ---
@@ -0,0 +1,135 @@
1
+ # everyrow MCP Server
2
+
3
+ MCP (Model Context Protocol) server for [everyrow](https://everyrow.io): agent ops at spreadsheet scale.
4
+
5
+ This server exposes everyrow's 5 core operations as MCP tools, allowing LLM applications to screen, rank, dedupe, merge, and run agents on CSV files.
6
+
7
+ **All tools operate on local CSV files.** Provide absolute file paths as input, and transformed results are written to new CSV files at your specified output path.
8
+
9
+ ## Setup
10
+
11
+ The server requires an everyrow API key. Get one at [everyrow.io/api-key](https://everyrow.io/api-key) ($20 free credit).
12
+
13
+ Either set the API key in your shell environment, or hardcode it directly in the config below.
14
+
15
+ ```bash
16
+ export EVERYROW_API_KEY=your_key_here
17
+ ```
18
+
19
+ Add this to your MCP config. If you have [uv](https://docs.astral.sh/uv/) installed:
20
+
21
+ ```json
22
+ {
23
+ "mcpServers": {
24
+ "everyrow": {
25
+ "command": "uvx",
26
+ "args": ["everyrow-mcp"],
27
+ "env": {
28
+ "EVERYROW_API_KEY": "${EVERYROW_API_KEY}"
29
+ }
30
+ }
31
+ }
32
+ }
33
+ ```
34
+
35
+ Alternatively, install with pip (ideally in a venv) and use `"command": "everyrow-mcp"` instead of uvx.
36
+
37
+ ## Available Tools
38
+
39
+ ### everyrow_screen
40
+
41
+ Filter CSV rows based on criteria that require judgment.
42
+
43
+ ```
44
+ Parameters:
45
+ - task: Natural language description of screening criteria
46
+ - input_csv: Absolute path to input CSV
47
+ - output_path: Directory or full .csv path for output
48
+ ```
49
+
50
+ Example: Filter job postings for "remote-friendly AND senior-level AND salary disclosed"
51
+
52
+ ### everyrow_rank
53
+
54
+ Score and sort CSV rows based on qualitative criteria.
55
+
56
+ ```
57
+ Parameters:
58
+ - task: Natural language description of ranking criteria
59
+ - input_csv: Absolute path to input CSV
60
+ - output_path: Directory or full .csv path for output
61
+ - field_name: Name of the score field to add
62
+ - field_type: Type of field (float, int, str, bool)
63
+ - ascending_order: Sort direction (default: true)
64
+ ```
65
+
66
+ Example: Rank leads by "likelihood to need data integration solutions"
67
+
68
+ ### everyrow_dedupe
69
+
70
+ Remove duplicate rows using semantic equivalence.
71
+
72
+ ```
73
+ Parameters:
74
+ - equivalence_relation: Natural language description of what makes rows duplicates
75
+ - input_csv: Absolute path to input CSV
76
+ - output_path: Directory or full .csv path for output
77
+ - select_representative: Keep one row per duplicate group (default: true)
78
+ ```
79
+
80
+ Example: Dedupe contacts where "same person even with name abbreviations or career changes"
81
+
82
+ ### everyrow_merge
83
+
84
+ Join two CSV files using intelligent entity matching.
85
+
86
+ ```
87
+ Parameters:
88
+ - task: Natural language description of how to match rows
89
+ - left_csv: Absolute path to primary CSV
90
+ - right_csv: Absolute path to secondary CSV
91
+ - output_path: Directory or full .csv path for output
92
+ - merge_on_left: (optional) Column name in left table
93
+ - merge_on_right: (optional) Column name in right table
94
+ ```
95
+
96
+ Example: Match software products to parent companies (Photoshop -> Adobe)
97
+
98
+ ### everyrow_agent
99
+
100
+ Run web research agents on each row of a CSV.
101
+
102
+ ```
103
+ Parameters:
104
+ - task: Natural language description of research task
105
+ - input_csv: Absolute path to input CSV
106
+ - output_path: Directory or full .csv path for output
107
+ ```
108
+
109
+ Example: "Find this company's latest funding round and lead investors"
110
+
111
+ ## Output Path Handling
112
+
113
+ The `output_path` parameter accepts two formats:
114
+
115
+ 1. **Directory**: Output file is named `{operation}_{input_name}.csv`
116
+ - Input: `/data/companies.csv`, Output path: `/output/`
117
+ - Result: `/output/screened_companies.csv`
118
+
119
+ 2. **Full file path**: Use the exact path specified
120
+ - Output path: `/output/my_results.csv`
121
+ - Result: `/output/my_results.csv`
122
+
123
+ The server validates output paths before making API requests to avoid wasted costs.
124
+
125
+ ## Development
126
+
127
+ ```bash
128
+ cd everyrow-mcp
129
+ uv sync
130
+ uv run pytest
131
+ ```
132
+
133
+ ## License
134
+
135
+ MIT - See [LICENSE.txt](../LICENSE.txt)
@@ -0,0 +1,61 @@
1
+ [project]
2
+ name = "everyrow-mcp"
3
+ version = "0.1.6"
4
+ description = "MCP server for everyrow: agent ops at spreadsheet scale"
5
+ readme = "README.md"
6
+ requires-python = ">=3.12"
7
+ dependencies = [
8
+ "everyrow>=0.1.5",
9
+ "mcp[cli]>=1.0.0",
10
+ "pandas>=2.0.0",
11
+ "pydantic>=2.0.0,<3.0.0",
12
+ ]
13
+
14
+ [project.scripts]
15
+ everyrow-mcp = "everyrow_mcp.server:main"
16
+
17
+ [tool.hatch.build.targets.wheel]
18
+ packages = ["src/everyrow_mcp"]
19
+
20
+ [build-system]
21
+ requires = ["hatchling"]
22
+ build-backend = "hatchling.build"
23
+
24
+ [dependency-groups]
25
+ dev = [
26
+ "pytest>=9.0.2",
27
+ "pytest-asyncio>=1.3.0",
28
+ "basedpyright>=1.22.0",
29
+ "ruff>=0.9.9",
30
+ ]
31
+
32
+ [tool.basedpyright]
33
+ venvPath = "."
34
+ venv = ".venv"
35
+ include = ["src", "tests"]
36
+ typeCheckingMode = "standard"
37
+
38
+ [tool.ruff]
39
+ include = ["src/**/*.py", "tests/**/*.py"]
40
+ exclude = [".venv"]
41
+ target-version = "py312"
42
+
43
+ [tool.ruff.lint]
44
+ select = ["F", "E", "W", "PL", "RUF", "ARG", "F401", "UP"]
45
+ ignore = [
46
+ "E501", # line too long
47
+ "RUF012", # Mutable class attributes should be annotated with `typing.ClassVar`
48
+ "PLR2004", # Magic value used in comparison
49
+ "PLR0913", # Too many arguments
50
+ ]
51
+ fixable = ["ALL"]
52
+ unfixable = []
53
+ extend-select = ["I"]
54
+
55
+ [tool.ruff.lint.flake8-tidy-imports]
56
+ ban-relative-imports = "all"
57
+
58
+ [tool.pytest.ini_options]
59
+ addopts = ["--import-mode=importlib"]
60
+ pythonpath = ["src"]
61
+ asyncio_mode = "auto"
@@ -0,0 +1 @@
1
+ """MCP server for everyrow: agent ops at spreadsheet scale."""