copass-management 0.5.0__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 (74) hide show
  1. copass_management-0.5.0/.gitignore +38 -0
  2. copass_management-0.5.0/PKG-INFO +68 -0
  3. copass_management-0.5.0/README.md +42 -0
  4. copass_management-0.5.0/pyproject.toml +59 -0
  5. copass_management-0.5.0/src/copass_management/__init__.py +52 -0
  6. copass_management-0.5.0/src/copass_management/_spec/v1/examples/get_agent.example.json +32 -0
  7. copass_management-0.5.0/src/copass_management/_spec/v1/examples/get_run_trace.example.json +26 -0
  8. copass_management-0.5.0/src/copass_management/_spec/v1/examples/get_source.example.json +31 -0
  9. copass_management-0.5.0/src/copass_management/_spec/v1/examples/list_agent_tools.example.json +32 -0
  10. copass_management-0.5.0/src/copass_management/_spec/v1/examples/list_agents.example.json +30 -0
  11. copass_management-0.5.0/src/copass_management/_spec/v1/examples/list_api_keys.example.json +31 -0
  12. copass_management-0.5.0/src/copass_management/_spec/v1/examples/list_apps.example.json +25 -0
  13. copass_management-0.5.0/src/copass_management/_spec/v1/examples/list_connected_accounts.example.json +17 -0
  14. copass_management-0.5.0/src/copass_management/_spec/v1/examples/list_runs.example.json +34 -0
  15. copass_management-0.5.0/src/copass_management/_spec/v1/examples/list_sandbox_connections.example.json +34 -0
  16. copass_management-0.5.0/src/copass_management/_spec/v1/examples/list_sandboxes.example.json +22 -0
  17. copass_management-0.5.0/src/copass_management/_spec/v1/examples/list_sources.example.json +22 -0
  18. copass_management-0.5.0/src/copass_management/_spec/v1/examples/list_trigger_components.example.json +33 -0
  19. copass_management-0.5.0/src/copass_management/_spec/v1/examples/list_triggers.example.json +24 -0
  20. copass_management-0.5.0/src/copass_management/_spec/v1/get_agent.json +81 -0
  21. copass_management-0.5.0/src/copass_management/_spec/v1/get_run_trace.json +55 -0
  22. copass_management-0.5.0/src/copass_management/_spec/v1/get_source.json +58 -0
  23. copass_management-0.5.0/src/copass_management/_spec/v1/list_agent_tools.json +54 -0
  24. copass_management-0.5.0/src/copass_management/_spec/v1/list_agents.json +44 -0
  25. copass_management-0.5.0/src/copass_management/_spec/v1/list_api_keys.json +63 -0
  26. copass_management-0.5.0/src/copass_management/_spec/v1/list_apps.json +64 -0
  27. copass_management-0.5.0/src/copass_management/_spec/v1/list_connected_accounts.json +55 -0
  28. copass_management-0.5.0/src/copass_management/_spec/v1/list_runs.json +63 -0
  29. copass_management-0.5.0/src/copass_management/_spec/v1/list_sandbox_connections.json +60 -0
  30. copass_management-0.5.0/src/copass_management/_spec/v1/list_sandboxes.json +36 -0
  31. copass_management-0.5.0/src/copass_management/_spec/v1/list_sources.json +46 -0
  32. copass_management-0.5.0/src/copass_management/_spec/v1/list_trigger_components.json +53 -0
  33. copass_management-0.5.0/src/copass_management/_spec/v1/list_triggers.json +58 -0
  34. copass_management-0.5.0/src/copass_management/adapters/__init__.py +0 -0
  35. copass_management-0.5.0/src/copass_management/adapters/mcp.py +60 -0
  36. copass_management-0.5.0/src/copass_management/registrar.py +129 -0
  37. copass_management-0.5.0/src/copass_management/specs.py +150 -0
  38. copass_management-0.5.0/src/copass_management/tools/__init__.py +119 -0
  39. copass_management-0.5.0/src/copass_management/tools/add_user_mcp_source.py +31 -0
  40. copass_management-0.5.0/src/copass_management/tools/connect_linear.py +21 -0
  41. copass_management-0.5.0/src/copass_management/tools/create_agent.py +40 -0
  42. copass_management-0.5.0/src/copass_management/tools/create_trigger.py +24 -0
  43. copass_management-0.5.0/src/copass_management/tools/get_agent.py +10 -0
  44. copass_management-0.5.0/src/copass_management/tools/get_run_trace.py +10 -0
  45. copass_management-0.5.0/src/copass_management/tools/get_source.py +13 -0
  46. copass_management-0.5.0/src/copass_management/tools/grant_sandbox_connection.py +25 -0
  47. copass_management-0.5.0/src/copass_management/tools/list_agent_tools.py +10 -0
  48. copass_management-0.5.0/src/copass_management/tools/list_agents.py +14 -0
  49. copass_management-0.5.0/src/copass_management/tools/list_api_keys.py +19 -0
  50. copass_management-0.5.0/src/copass_management/tools/list_apps.py +18 -0
  51. copass_management-0.5.0/src/copass_management/tools/list_connected_accounts.py +14 -0
  52. copass_management-0.5.0/src/copass_management/tools/list_runs.py +15 -0
  53. copass_management-0.5.0/src/copass_management/tools/list_sandbox_connections.py +13 -0
  54. copass_management-0.5.0/src/copass_management/tools/list_sandboxes.py +10 -0
  55. copass_management-0.5.0/src/copass_management/tools/list_sources.py +14 -0
  56. copass_management-0.5.0/src/copass_management/tools/list_trigger_components.py +18 -0
  57. copass_management-0.5.0/src/copass_management/tools/list_triggers.py +12 -0
  58. copass_management-0.5.0/src/copass_management/tools/pause_trigger.py +14 -0
  59. copass_management-0.5.0/src/copass_management/tools/provision_source.py +32 -0
  60. copass_management-0.5.0/src/copass_management/tools/resume_trigger.py +14 -0
  61. copass_management-0.5.0/src/copass_management/tools/revoke_sandbox_connection.py +15 -0
  62. copass_management-0.5.0/src/copass_management/tools/revoke_user_mcp_source.py +13 -0
  63. copass_management-0.5.0/src/copass_management/tools/start_integration_connect.py +21 -0
  64. copass_management-0.5.0/src/copass_management/tools/test_user_mcp_source.py +13 -0
  65. copass_management-0.5.0/src/copass_management/tools/update_agent_model_settings.py +29 -0
  66. copass_management-0.5.0/src/copass_management/tools/update_agent_prompt.py +16 -0
  67. copass_management-0.5.0/src/copass_management/tools/update_agent_tool_sources.py +24 -0
  68. copass_management-0.5.0/src/copass_management/tools/update_agent_tools.py +17 -0
  69. copass_management-0.5.0/src/copass_management/tools/update_source.py +37 -0
  70. copass_management-0.5.0/src/copass_management/tools/update_trigger.py +29 -0
  71. copass_management-0.5.0/src/copass_management/tools/wire_integration_to_agent.py +16 -0
  72. copass_management-0.5.0/tests/__init__.py +0 -0
  73. copass_management-0.5.0/tests/test_conformance.py +183 -0
  74. copass_management-0.5.0/tests/test_registrar.py +140 -0
@@ -0,0 +1,38 @@
1
+ # Dependencies
2
+ node_modules/
3
+
4
+ # Build output
5
+ dist/
6
+ *.tsbuildinfo
7
+
8
+ # Environment
9
+ .env
10
+ .env.*
11
+
12
+ # IDE
13
+ .vscode/
14
+ .idea/
15
+ *.swp
16
+ *.swo
17
+ *~
18
+
19
+ # OS
20
+ .DS_Store
21
+ Thumbs.db
22
+
23
+ # Test
24
+ coverage/
25
+
26
+ # Lerna
27
+ lerna-debug.log
28
+ .nx/cache
29
+ .nx/workspace-data
30
+
31
+ # Python
32
+ __pycache__/
33
+ *.pyc
34
+ *.pyo
35
+ *.egg-info/
36
+ .venv/
37
+ venv/
38
+ .olane
@@ -0,0 +1,68 @@
1
+ Metadata-Version: 2.4
2
+ Name: copass-management
3
+ Version: 0.5.0
4
+ Summary: Spec-driven management tool registrar for Copass agents (read-only, Phase 1).
5
+ Project-URL: Homepage, https://github.com/olane-labs/copass
6
+ Project-URL: Repository, https://github.com/olane-labs/copass.git
7
+ Author: Olane Inc.
8
+ License: MIT
9
+ Keywords: agents,copass,management,mcp,olane
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Requires-Python: >=3.10
16
+ Requires-Dist: copass-core>=0.3.0
17
+ Requires-Dist: jsonschema>=4.21
18
+ Requires-Dist: pydantic>=2.7
19
+ Provides-Extra: dev
20
+ Requires-Dist: mypy>=1.10; extra == 'dev'
21
+ Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
22
+ Requires-Dist: pytest>=8.0; extra == 'dev'
23
+ Requires-Dist: respx>=0.21; extra == 'dev'
24
+ Requires-Dist: ruff>=0.5; extra == 'dev'
25
+ Description-Content-Type: text/markdown
26
+
27
+ # copass-management
28
+
29
+ Spec-driven management tool registrar for Copass agents (Python).
30
+
31
+ This package consumes the `copass/spec/management/v1/` JSON
32
+ Schema corpus and exposes a transport-agnostic registrar that wires
33
+ each tool through `copass-core`. An optional MCP adapter lives at
34
+ `copass_management.adapters.mcp` for Model Context Protocol consumers.
35
+
36
+ Phase 1 ships the **read-only subset** (14 tools). Write tools follow
37
+ in Phase 2.
38
+
39
+ ## Usage
40
+
41
+ ```python
42
+ from copass_core import ApiKeyAuth, CopassClient
43
+ from copass_management import (
44
+ RegistrarOptions,
45
+ register_management_tools,
46
+ )
47
+
48
+ client = CopassClient(auth=ApiKeyAuth(key="olk_..."))
49
+
50
+ def register(registration):
51
+ print(registration.name, registration.description)
52
+
53
+ register_management_tools(
54
+ register,
55
+ client,
56
+ RegistrarOptions(sandbox_id="sb_..."),
57
+ )
58
+ ```
59
+
60
+ For MCP transports, use `register_to_mcp_server` from
61
+ `copass_management.adapters.mcp`. The MCP SDK is an optional
62
+ dependency installed separately.
63
+
64
+ ## Spec source
65
+
66
+ The package vendors a copy of the JSON Schema corpus under
67
+ `copass_management/_spec/v1/`. In dev, set
68
+ `COPASS_MANAGEMENT_SPEC_DIR` to point at the source tree.
@@ -0,0 +1,42 @@
1
+ # copass-management
2
+
3
+ Spec-driven management tool registrar for Copass agents (Python).
4
+
5
+ This package consumes the `copass/spec/management/v1/` JSON
6
+ Schema corpus and exposes a transport-agnostic registrar that wires
7
+ each tool through `copass-core`. An optional MCP adapter lives at
8
+ `copass_management.adapters.mcp` for Model Context Protocol consumers.
9
+
10
+ Phase 1 ships the **read-only subset** (14 tools). Write tools follow
11
+ in Phase 2.
12
+
13
+ ## Usage
14
+
15
+ ```python
16
+ from copass_core import ApiKeyAuth, CopassClient
17
+ from copass_management import (
18
+ RegistrarOptions,
19
+ register_management_tools,
20
+ )
21
+
22
+ client = CopassClient(auth=ApiKeyAuth(key="olk_..."))
23
+
24
+ def register(registration):
25
+ print(registration.name, registration.description)
26
+
27
+ register_management_tools(
28
+ register,
29
+ client,
30
+ RegistrarOptions(sandbox_id="sb_..."),
31
+ )
32
+ ```
33
+
34
+ For MCP transports, use `register_to_mcp_server` from
35
+ `copass_management.adapters.mcp`. The MCP SDK is an optional
36
+ dependency installed separately.
37
+
38
+ ## Spec source
39
+
40
+ The package vendors a copy of the JSON Schema corpus under
41
+ `copass_management/_spec/v1/`. In dev, set
42
+ `COPASS_MANAGEMENT_SPEC_DIR` to point at the source tree.
@@ -0,0 +1,59 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "copass-management"
7
+ version = "0.5.0"
8
+ description = "Spec-driven management tool registrar for Copass agents (read-only, Phase 1)."
9
+ readme = "README.md"
10
+ license = { text = "MIT" }
11
+ authors = [{ name = "Olane Inc." }]
12
+ requires-python = ">=3.10"
13
+ keywords = ["copass", "management", "agents", "mcp", "olane"]
14
+ classifiers = [
15
+ "License :: OSI Approved :: MIT License",
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.10",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Programming Language :: Python :: 3.12",
20
+ ]
21
+ dependencies = [
22
+ "copass-core>=0.3.0",
23
+ "pydantic>=2.7",
24
+ "jsonschema>=4.21",
25
+ ]
26
+
27
+ [project.optional-dependencies]
28
+ dev = [
29
+ "pytest>=8.0",
30
+ "pytest-asyncio>=0.23",
31
+ "respx>=0.21",
32
+ "mypy>=1.10",
33
+ "ruff>=0.5",
34
+ ]
35
+
36
+ [project.urls]
37
+ Homepage = "https://github.com/olane-labs/copass"
38
+ Repository = "https://github.com/olane-labs/copass.git"
39
+
40
+ [tool.copass]
41
+ min_spec_version = "v1"
42
+ max_spec_version = "v1"
43
+
44
+ [tool.hatch.build.targets.wheel]
45
+ packages = ["src/copass_management"]
46
+ artifacts = ["src/copass_management/_spec/**/*.json"]
47
+
48
+ [tool.pytest.ini_options]
49
+ asyncio_mode = "auto"
50
+ testpaths = ["tests"]
51
+
52
+ [tool.ruff]
53
+ line-length = 100
54
+ target-version = "py310"
55
+
56
+ [tool.mypy]
57
+ python_version = "3.10"
58
+ strict = true
59
+ packages = ["copass_management"]
@@ -0,0 +1,52 @@
1
+ """Spec-driven management tool registrar for Copass agents (Python).
2
+
3
+ Phase 1 ships the read-only subset (14 tools). Write tools land in
4
+ Phase 2.
5
+
6
+ Public surface::
7
+
8
+ from copass_management import (
9
+ register_management_tools,
10
+ register_to_mcp_server,
11
+ load_management_specs,
12
+ MIN_SPEC_VERSION,
13
+ MAX_SPEC_VERSION,
14
+ )
15
+ """
16
+
17
+ from copass_management.adapters.mcp import register_to_mcp_server
18
+ from copass_management.registrar import (
19
+ Register,
20
+ RegistrarOptions,
21
+ ToolContext,
22
+ ToolHandler,
23
+ ToolRegistration,
24
+ register_management_tools,
25
+ )
26
+ from copass_management.specs import (
27
+ LoadedManagementCorpus,
28
+ ManagementFixture,
29
+ ManagementSpec,
30
+ MAX_SPEC_VERSION,
31
+ MIN_SPEC_VERSION,
32
+ load_management_specs,
33
+ )
34
+
35
+ __version__ = "0.5.0"
36
+
37
+ __all__ = [
38
+ "__version__",
39
+ "Register",
40
+ "RegistrarOptions",
41
+ "ToolContext",
42
+ "ToolHandler",
43
+ "ToolRegistration",
44
+ "register_management_tools",
45
+ "register_to_mcp_server",
46
+ "load_management_specs",
47
+ "LoadedManagementCorpus",
48
+ "ManagementFixture",
49
+ "ManagementSpec",
50
+ "MIN_SPEC_VERSION",
51
+ "MAX_SPEC_VERSION",
52
+ ]
@@ -0,0 +1,32 @@
1
+ {
2
+ "input": {
3
+ "slug": "gtm-marketing"
4
+ },
5
+ "output": {
6
+ "agent": {
7
+ "agent_id": "ag_01HXYZAB1234567890123ABCDE",
8
+ "slug": "gtm-marketing",
9
+ "name": "GTM Marketing Triage",
10
+ "description": "Reads incoming marketing-channel events and drafts responses.",
11
+ "system_prompt": "You triage marketing-channel events. When a mention arrives, summarise the request and react with a thumbs-up.",
12
+ "tool_allowlist": [
13
+ "discover",
14
+ "interpret",
15
+ "search",
16
+ "pd_slack_v2_slack_v2-add-reaction"
17
+ ],
18
+ "model_settings": {
19
+ "backend": "anthropic",
20
+ "model": "claude-sonnet-4-6",
21
+ "temperature": 0.3,
22
+ "max_tokens": 4096,
23
+ "max_turns": 8,
24
+ "timeout_s": 60
25
+ },
26
+ "status": "active",
27
+ "version": 7,
28
+ "created_at": "2026-03-12T11:14:00.000000+00:00",
29
+ "updated_at": "2026-04-22T08:01:55.000000+00:00"
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "input": {
3
+ "run_id": "rn_01HXYZAB1234567890123RUN01"
4
+ },
5
+ "output": {
6
+ "run_id": "rn_01HXYZAB1234567890123RUN01",
7
+ "agent_id": "ag_01HXYZAB1234567890123ABCDE",
8
+ "status": "succeeded",
9
+ "started_at": "2026-04-29T18:02:55.000000+00:00",
10
+ "finished_at": "2026-04-29T18:03:00.000000+00:00",
11
+ "error_message": null,
12
+ "tool_resolution_trace": {
13
+ "sources_resolved": ["copass_management", "copass_retrieval"],
14
+ "sources_skipped": [],
15
+ "tool_names_advertised": [
16
+ "discover",
17
+ "interpret",
18
+ "search",
19
+ "pd_slack_v2_slack_v2-add-reaction"
20
+ ],
21
+ "allowlist_filtered_out": [],
22
+ "allowlist_missing_entries": [],
23
+ "duration_ms": 132
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "input": {
3
+ "data_source_id": "ds_01HXYZAB1234567890123ABCDE"
4
+ },
5
+ "output": {
6
+ "source": {
7
+ "data_source_id": "ds_01HXYZAB1234567890123ABCDE",
8
+ "name": "Acme HQ Slack",
9
+ "provider": "slack_v2",
10
+ "ingestion_mode": "realtime",
11
+ "status": "active",
12
+ "kind": "trigger",
13
+ "external_account_id": "apn_demo_acct_001",
14
+ "webhook_url": "https://api.example.copass.id/api/v1/webhooks/integrations/inbound/abc123",
15
+ "last_sync_at": "2026-04-29T22:14:01.000000+00:00",
16
+ "created_at": "2026-02-11T17:02:33.000000+00:00",
17
+ "adapter_config": {
18
+ "app_slug": "slack_v2",
19
+ "account_id": "apn_demo_acct_001",
20
+ "external_user_id": "u_user-uuid-placeholder",
21
+ "trigger_component": {
22
+ "component_id": "slack_v2-new-mention",
23
+ "configured_props": {
24
+ "slack": { "authProvisionId": "apn_demo_acct_001" },
25
+ "keyword": "copass"
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "input": {
3
+ "app_slug": "slack_v2"
4
+ },
5
+ "output": {
6
+ "tools": [
7
+ {
8
+ "name": "pd_slack_v2_slack_v2-add-reaction",
9
+ "app_slug": "slack_v2",
10
+ "description": "Add an emoji reaction to a message."
11
+ },
12
+ {
13
+ "name": "pd_slack_v2_slack_v2-post-message",
14
+ "app_slug": "slack_v2",
15
+ "description": "Post a message into a channel or thread."
16
+ }
17
+ ],
18
+ "by_app": {
19
+ "slack_v2": [
20
+ {
21
+ "name": "pd_slack_v2_slack_v2-add-reaction",
22
+ "description": "Add an emoji reaction to a message."
23
+ },
24
+ {
25
+ "name": "pd_slack_v2_slack_v2-post-message",
26
+ "description": "Post a message into a channel or thread."
27
+ }
28
+ ]
29
+ },
30
+ "count": 2
31
+ }
32
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "input": {
3
+ "status": "active"
4
+ },
5
+ "output": {
6
+ "agents": [
7
+ {
8
+ "agent_id": "ag_01HXYZAB1234567890123ABCDE",
9
+ "slug": "gtm-marketing",
10
+ "name": "GTM Marketing Triage",
11
+ "description": "Reads incoming marketing-channel events and drafts responses.",
12
+ "status": "active",
13
+ "version": 7,
14
+ "created_at": "2026-03-12T11:14:00.000000+00:00",
15
+ "updated_at": "2026-04-22T08:01:55.000000+00:00"
16
+ },
17
+ {
18
+ "agent_id": "ag_01HXYZAB1234567890123ABCDF",
19
+ "slug": "support-firefighter",
20
+ "name": "Support Firefighter",
21
+ "description": "Reacts to high-severity support pings.",
22
+ "status": "active",
23
+ "version": 3,
24
+ "created_at": "2026-04-01T09:00:00.000000+00:00",
25
+ "updated_at": "2026-04-01T09:00:00.000000+00:00"
26
+ }
27
+ ],
28
+ "count": 2
29
+ }
30
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "input": {
3
+ "kinds": ["general", "agent_invoke"],
4
+ "include_revoked": false
5
+ },
6
+ "output": {
7
+ "keys": [
8
+ {
9
+ "api_key_id": "ak_01HXYZAB1234567890123KEY01",
10
+ "kind": "general",
11
+ "label": "Workstation",
12
+ "key_prefix": "olk_demo",
13
+ "agent_id": null,
14
+ "created_at": "2026-02-08T10:15:30.000000+00:00",
15
+ "expires_at": null,
16
+ "revoked_at": null
17
+ },
18
+ {
19
+ "api_key_id": "ak_01HXYZAB1234567890123KEY02",
20
+ "kind": "agent_invoke",
21
+ "label": "gtm-marketing invoke",
22
+ "key_prefix": "olk_demo",
23
+ "agent_id": "ag_01HXYZAB1234567890123ABCDE",
24
+ "created_at": "2026-04-01T09:01:00.000000+00:00",
25
+ "expires_at": "2026-10-01T09:01:00.000000+00:00",
26
+ "revoked_at": null
27
+ }
28
+ ],
29
+ "count": 2
30
+ }
31
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "input": {
3
+ "q": "slack",
4
+ "limit": 10
5
+ },
6
+ "output": {
7
+ "apps": [
8
+ {
9
+ "app_slug": "slack_v2",
10
+ "name": "Slack",
11
+ "description": "Send messages, react, and read channels.",
12
+ "categories": ["chat", "team-collaboration"],
13
+ "provider": "trigger_provider"
14
+ },
15
+ {
16
+ "app_slug": "slack-admin",
17
+ "name": "Slack Admin",
18
+ "description": "Workspace admin actions.",
19
+ "categories": ["chat", "admin"],
20
+ "provider": "trigger_provider"
21
+ }
22
+ ],
23
+ "next_cursor": null
24
+ }
25
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "input": {
3
+ "app_slug": "slack_v2"
4
+ },
5
+ "output": {
6
+ "accounts": [
7
+ {
8
+ "id": "apn_demo_acct_001",
9
+ "app_slug": "slack_v2",
10
+ "name": "Acme HQ",
11
+ "created_at": "2026-02-11T17:02:30.000000+00:00",
12
+ "provider": "trigger_provider"
13
+ }
14
+ ],
15
+ "count": 1
16
+ }
17
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "input": {
3
+ "agent_slug": "gtm-marketing",
4
+ "limit": 5
5
+ },
6
+ "output": {
7
+ "agent_slug": "gtm-marketing",
8
+ "runs": [
9
+ {
10
+ "run_id": "rn_01HXYZAB1234567890123RUN01",
11
+ "status": "succeeded",
12
+ "trigger_id": "tg_01HXYZAB1234567890123TRIG1",
13
+ "tokens_in": 2418,
14
+ "tokens_out": 412,
15
+ "duration_ms": 4812,
16
+ "error_message": null,
17
+ "started_at": "2026-04-29T18:02:55.000000+00:00",
18
+ "finished_at": "2026-04-29T18:03:00.000000+00:00"
19
+ },
20
+ {
21
+ "run_id": "rn_01HXYZAB1234567890123RUN02",
22
+ "status": "failed",
23
+ "trigger_id": "tg_01HXYZAB1234567890123TRIG1",
24
+ "tokens_in": 1112,
25
+ "tokens_out": 0,
26
+ "duration_ms": 921,
27
+ "error_message": "tool 'pd_slack_v2_slack_v2-add-reaction' returned 429",
28
+ "started_at": "2026-04-29T17:54:01.000000+00:00",
29
+ "finished_at": "2026-04-29T17:54:02.000000+00:00"
30
+ }
31
+ ],
32
+ "count": 2
33
+ }
34
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "input": {
3
+ "include_revoked": false
4
+ },
5
+ "output": {
6
+ "connections": [
7
+ {
8
+ "connection_id": "cn_01HXYZAB1234567890123CONN1",
9
+ "user_id": "00000000-0000-4000-a000-000000000001",
10
+ "copass_id": "alice",
11
+ "role": "editor",
12
+ "project_id": null,
13
+ "label": "@alice",
14
+ "status": "active",
15
+ "expires_at": null,
16
+ "revoked_at": null,
17
+ "created_at": "2026-04-01T11:30:00.000000+00:00"
18
+ },
19
+ {
20
+ "connection_id": "cn_01HXYZAB1234567890123CONN2",
21
+ "user_id": "00000000-0000-4000-a000-000000000002",
22
+ "copass_id": "bob",
23
+ "role": "viewer",
24
+ "project_id": "pj_01HXYZAB1234567890123PRJ01",
25
+ "label": "@bob — sales project",
26
+ "status": "active",
27
+ "expires_at": "2026-12-31T23:59:59.000000+00:00",
28
+ "revoked_at": null,
29
+ "created_at": "2026-04-15T08:00:00.000000+00:00"
30
+ }
31
+ ],
32
+ "count": 2
33
+ }
34
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "input": {},
3
+ "output": {
4
+ "sandboxes": [
5
+ {
6
+ "sandbox_id": "sb_01HXYZAB12345678901234567A",
7
+ "name": "Personal",
8
+ "tier": "free",
9
+ "status": "active",
10
+ "created_at": "2025-12-04T18:23:11.000000+00:00"
11
+ },
12
+ {
13
+ "sandbox_id": "sb_01HXYZAB12345678901234567B",
14
+ "name": "Work",
15
+ "tier": "pro",
16
+ "status": "active",
17
+ "created_at": "2026-01-22T09:15:00.000000+00:00"
18
+ }
19
+ ],
20
+ "count": 2
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "input": {
3
+ "provider": "slack_v2"
4
+ },
5
+ "output": {
6
+ "sources": [
7
+ {
8
+ "data_source_id": "ds_01HXYZAB1234567890123ABCDE",
9
+ "name": "Acme HQ Slack",
10
+ "provider": "slack_v2",
11
+ "ingestion_mode": "realtime",
12
+ "status": "active",
13
+ "kind": "trigger",
14
+ "external_account_id": "apn_demo_acct_001",
15
+ "webhook_url": "https://api.example.copass.id/api/v1/webhooks/integrations/inbound/abc123",
16
+ "last_sync_at": "2026-04-29T22:14:01.000000+00:00",
17
+ "created_at": "2026-02-11T17:02:33.000000+00:00"
18
+ }
19
+ ],
20
+ "count": 1
21
+ }
22
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "input": {
3
+ "app": "slack_v2",
4
+ "q": "mention",
5
+ "limit": 25
6
+ },
7
+ "output": {
8
+ "components": [
9
+ {
10
+ "component_id": "slack_v2-new-mention",
11
+ "name": "New Mention (Instant)",
12
+ "description": "Emit when the connected user is mentioned in any subscribed channel.",
13
+ "version": "0.0.7",
14
+ "configurable_props": [
15
+ {
16
+ "name": "slack",
17
+ "type": "app",
18
+ "label": "Slack account",
19
+ "required": true
20
+ },
21
+ {
22
+ "name": "keyword",
23
+ "type": "string",
24
+ "label": "Mention keyword",
25
+ "required": true,
26
+ "description": "Literal substring matched against the message text. e.g. 'copass'."
27
+ }
28
+ ]
29
+ }
30
+ ],
31
+ "count": 1
32
+ }
33
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "input": {
3
+ "agent_slug": "gtm-marketing"
4
+ },
5
+ "output": {
6
+ "agent_slug": "gtm-marketing",
7
+ "triggers": [
8
+ {
9
+ "trigger_id": "tg_01HXYZAB1234567890123TRIG1",
10
+ "data_source_id": "ds_01HXYZAB1234567890123ABCDE",
11
+ "event_type_filter": "slack.message.new",
12
+ "filter_config": {
13
+ "item.channel": "C0123456789"
14
+ },
15
+ "status": "active",
16
+ "rate_limit_per_hour": 60,
17
+ "fire_count": 142,
18
+ "last_fired_at": "2026-04-29T18:02:55.000000+00:00",
19
+ "created_at": "2026-03-12T11:14:30.000000+00:00"
20
+ }
21
+ ],
22
+ "count": 1
23
+ }
24
+ }