nocfo-cli 1.2.2__tar.gz → 1.2.4__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 (33) hide show
  1. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/PKG-INFO +1 -1
  2. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/pyproject.toml +1 -1
  3. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/mcp/http_error_capture.py +6 -1
  4. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/openapi.py +7 -3
  5. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/LICENSE +0 -0
  6. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/README.md +0 -0
  7. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/__init__.py +0 -0
  8. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/api_client.py +0 -0
  9. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/__init__.py +0 -0
  10. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/app.py +0 -0
  11. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/__init__.py +0 -0
  12. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/_helpers.py +0 -0
  13. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/accounts.py +0 -0
  14. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/auth.py +0 -0
  15. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/businesses.py +0 -0
  16. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/contacts.py +0 -0
  17. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/documents.py +0 -0
  18. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/files.py +0 -0
  19. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/invoices.py +0 -0
  20. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/products.py +0 -0
  21. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/purchase_invoices.py +0 -0
  22. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/reports.py +0 -0
  23. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/schema.py +0 -0
  24. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/tags.py +0 -0
  25. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/commands/user.py +0 -0
  26. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/context.py +0 -0
  27. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/cli/output.py +0 -0
  28. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/config.py +0 -0
  29. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/mcp/__init__.py +0 -0
  30. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/mcp/auth.py +0 -0
  31. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/mcp/error_handling.py +0 -0
  32. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/mcp/middleware.py +0 -0
  33. {nocfo_cli-1.2.2 → nocfo_cli-1.2.4}/src/nocfo_toolkit/mcp/server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nocfo-cli
3
- Version: 1.2.2
3
+ Version: 1.2.4
4
4
  Summary: NoCFO CLI, MCP server, and Cursor skill toolkit.
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "nocfo-cli"
7
- version = "1.2.2"
7
+ version = "1.2.4"
8
8
  description = "NoCFO CLI, MCP server, and Cursor skill toolkit."
9
9
  authors = ["NoCFO"]
10
10
  readme = "README.md"
@@ -27,9 +27,14 @@ async def capture_http_error_response(response: httpx.Response) -> None:
27
27
  _LAST_HTTP_ERROR.set(None)
28
28
  return
29
29
 
30
+ try:
31
+ await response.aread()
32
+ except httpx.HTTPError:
33
+ pass
34
+
30
35
  try:
31
36
  payload: Any = response.json() if response.content else None
32
- except ValueError:
37
+ except (ValueError, httpx.ResponseNotRead):
33
38
  payload = (response.text or "").strip()[:1000] or None
34
39
 
35
40
  _LAST_HTTP_ERROR.set(
@@ -49,7 +49,7 @@ def load_openapi_spec(
49
49
 
50
50
 
51
51
  def filter_mcp_spec(spec: dict[str, Any], mcp_tag: str = "MCP") -> dict[str, Any]:
52
- """Return spec containing only operations tagged as MCP."""
52
+ """Return spec containing only MCP-visible operations."""
53
53
 
54
54
  filtered_paths: dict[str, Any] = {}
55
55
  for path, methods in spec.get("paths", {}).items():
@@ -59,9 +59,13 @@ def filter_mcp_spec(spec: dict[str, Any], mcp_tag: str = "MCP") -> dict[str, Any
59
59
  for method, meta in methods.items():
60
60
  if not isinstance(meta, dict):
61
61
  continue
62
+
62
63
  tags = meta.get("tags", [])
63
- if mcp_tag in tags:
64
- kept_methods[method] = meta
64
+ if mcp_tag not in tags:
65
+ continue
66
+ if meta.get("x-mcp-exclude") is True:
67
+ continue
68
+ kept_methods[method] = meta
65
69
  if kept_methods:
66
70
  filtered_paths[path] = kept_methods
67
71
 
File without changes
File without changes