reeve 0.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1c59f8e6c82441798415dbe8c2a0f53820615dfe8fcce4d96294ccc46d355208
4
+ data.tar.gz: 670b19c4de2bc2fab5c16b4fbb7c958b3ea64cede00615f219032ef27161626f
5
+ SHA512:
6
+ metadata.gz: 148721a9d10024026ff713a59ddf0fdf6cb1c32691f4c78c79961337a654f08c8f08b3445ba8a4630c00ce563553352c59194cc7355f00eae50942cf0f61cae0
7
+ data.tar.gz: 6b2b69206f97d2ca3278a3ccb37ba63a4ab74447a39de01f6e0c5ebe1c53aff5958a4c2389fafa0d55ae192bdd4035ed1df9d224e8fa49c7c4e52064bcdbe887
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ ## [0.0.1] - 2026-08-11
4
+
5
+ - Placeholder release reserving the gem name. No functionality.
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2026 Victor Velazquez
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,63 @@
1
+ # Reeve
2
+
3
+ **Authentication says who's at the door. Reeve decides what they can touch, and remembers
4
+ what they touched.**
5
+
6
+ A Ruby gem that makes it safe for a Rails application to expose MCP tools to AI agents:
7
+ declarative per-record authorization, an append-only audit ledger, and a testing kit that
8
+ proves both hold.
9
+
10
+ > **Status: 0.0.1 is a placeholder release reserving the gem name. There is no working
11
+ > code yet.** Development is in progress — don't install this expecting it to do anything.
12
+
13
+ *A reeve is an official who acts with delegated authority on behalf of someone else — the
14
+ root of "sheriff" (shire-reeve). That delegation is exactly what this gem governs: an agent
15
+ acting for a human, allowed to reach only what that human may reach.*
16
+
17
+ *Developed under the working name `mcp-guardrails`.*
18
+
19
+ ## The problem
20
+
21
+ The Ruby MCP server stack — the official [`mcp`](https://github.com/modelcontextprotocol/ruby-sdk)
22
+ gem, [fast-mcp](https://github.com/yjacquin/fast-mcp), and
23
+ [ActionMCP](https://github.com/seuros/actionmcp) — is healthy and consolidating. All three
24
+ authenticate the *connection*. None of them scope what an authenticated agent may **see per
25
+ person**, none produce a compliance-grade audit trail, and none ship a way to prove either
26
+ in CI.
27
+
28
+ That's the gap Reeve fills. It's an extension layer, not a competitor — it rides all three.
29
+
30
+ ## The shape of it
31
+
32
+ ```ruby
33
+ class InvoiceSearchTool < FastMcp::Tool
34
+ guard_with InvoicePolicy # the only line you add
35
+
36
+ def call(query:)
37
+ Invoice.where("number LIKE ?", "%#{query}%")
38
+ end
39
+ end
40
+ ```
41
+
42
+ Three things then hold:
43
+
44
+ 1. **Deny by default.** The tool returns only invoices the acting principal may see. No
45
+ principal, no guard, or a policy error means no records — never a silent pass.
46
+ 2. **Every call leaves a trace.** One append-only ledger row per invocation, allowed or
47
+ denied, naming the agent, the principal, the arguments, what came back, and the rule
48
+ that decided.
49
+ 3. **Provable in CI.** `expect(tool).to deny_access_for(stranger)` in RSpec,
50
+ `assert_denies_access_for` in Minitest, or the checks called directly from a rake task.
51
+
52
+ ## Planned for v1
53
+
54
+ - Per-record authorization bridging Pundit or plain policy objects
55
+ - Append-only audit ledger with a query interface and an install generator
56
+ - Testing kit: framework-neutral checks with RSpec, Minitest, and plain-Ruby front-ends
57
+ - fast-mcp adapter, plus a plain interface for everyone else
58
+
59
+ Ruby 3.0+, Rails 7.0+. No runtime dependencies.
60
+
61
+ ## License
62
+
63
+ MIT. See [LICENSE.txt](LICENSE.txt).
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Reeve
4
+ VERSION = "0.0.1"
5
+ end
data/lib/reeve.rb ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "reeve/version"
4
+
5
+ # Reeve — per-record authorization and an append-only audit ledger for the MCP tools
6
+ # a Rails application exposes to AI agents.
7
+ #
8
+ # 0.0.1 is a placeholder release reserving the gem name. It has no functionality yet.
9
+ # See https://github.com/vicmaster/reeve for progress.
10
+ module Reeve
11
+ class Error < StandardError; end
12
+ end
metadata ADDED
@@ -0,0 +1,59 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: reeve
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Victor Velazquez
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-08-11 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |
14
+ Reeve makes it safe for a Rails application to expose MCP (Model Context Protocol)
15
+ tools to AI agents. Authentication says who is at the door; Reeve decides what they
16
+ may touch and remembers what they touched: declarative per-record authorization
17
+ scoped to the human the agent acts for, an append-only audit ledger of every call,
18
+ and a testing kit that turns both guarantees into CI assertions. Works alongside
19
+ fast-mcp, ActionMCP, and the official mcp gem. Developed under the working name
20
+ mcp-guardrails.
21
+ email:
22
+ - velazquezgaspar16@gmail.com
23
+ executables: []
24
+ extensions: []
25
+ extra_rdoc_files: []
26
+ files:
27
+ - CHANGELOG.md
28
+ - LICENSE.txt
29
+ - README.md
30
+ - lib/reeve.rb
31
+ - lib/reeve/version.rb
32
+ homepage: https://github.com/vicmaster/reeve
33
+ licenses:
34
+ - MIT
35
+ metadata:
36
+ homepage_uri: https://github.com/vicmaster/reeve
37
+ source_code_uri: https://github.com/vicmaster/reeve
38
+ changelog_uri: https://github.com/vicmaster/reeve/blob/main/CHANGELOG.md
39
+ bug_tracker_uri: https://github.com/vicmaster/reeve/issues
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: 3.0.0
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements: []
55
+ rubygems_version: 3.5.22
56
+ signing_key:
57
+ specification_version: 4
58
+ summary: Per-record authorization and audit guardrails for Rails MCP tools
59
+ test_files: []