postiz-agent 2.3.2__tar.gz → 2.3.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.
- {postiz_agent-2.3.2/postiz_agent.egg-info → postiz_agent-2.3.4}/PKG-INFO +5 -5
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/README.md +1 -1
- postiz_agent-2.3.4/postiz_agent/connector_sources.py +315 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/mcp_server.py +1 -1
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/certification.json +0 -3
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/social.ttl +2 -2
- {postiz_agent-2.3.2 → postiz_agent-2.3.4/postiz_agent.egg-info}/PKG-INFO +5 -5
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent.egg-info/SOURCES.txt +2 -2
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent.egg-info/entry_points.txt +3 -3
- postiz_agent-2.3.4/postiz_agent.egg-info/requires.txt +14 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/pyproject.toml +7 -8
- postiz_agent-2.3.4/requirements.txt +1 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/test_coverage_gap_fillers.py +1 -0
- postiz_agent-2.3.4/tests/test_default_content_surfaces.py +43 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/test_kg_ingest.py +1 -1
- postiz_agent-2.3.2/postiz_agent/connectors/mcp_source_presets.json +0 -14
- postiz_agent-2.3.2/postiz_agent/connectors/tool_schema_fingerprints.json +0 -8
- postiz_agent-2.3.2/postiz_agent.egg-info/requires.txt +0 -14
- postiz_agent-2.3.2/requirements.txt +0 -1
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/LICENSE +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/MANIFEST.in +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/__init__.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/__main__.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/__init__.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_analytics.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_base.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_integrations.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_notifications.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_posts.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_uploads.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_video.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api_client.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/auth.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/connectors/__init__.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/kg_ingest.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/kg_media.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/mcp_config.json +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/__init__.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/fixtures/records.json +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/mappings/source.yaml +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/migrations/manifest.json +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/shapes/connector.shacl.ttl +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/postiz_models.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/prompts/__init__.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/__init__.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-agent-operations/SKILL.md +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-agent-operations/agents/openai.yaml +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-agent-operations/references/catalog.md +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-audience-analytics/SKILL.md +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-audience-analytics/WORKFLOW.md +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-channel-management/SKILL.md +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-channel-management/WORKFLOW.md +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-content-scheduling/SKILL.md +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-content-scheduling/WORKFLOW.md +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent.egg-info/dependency_links.txt +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent.egg-info/top_level.txt +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/scripts/security_contract.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/scripts/security_sanitizer.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/scripts/verify_api_integration.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/setup.cfg +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/conftest.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/test_action_discovery.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/test_init.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/test_init_dynamics.py +0 -0
- {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/test_kg_media.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: postiz-agent
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.4
|
|
4
4
|
Summary: Agent for interacting with Postiz Public API
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -12,12 +12,12 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: <3.15,>=3.12
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
15
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1
|
|
16
16
|
Requires-Dist: requests>=2.34.2
|
|
17
17
|
Provides-Extra: mcp
|
|
18
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
18
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "mcp"
|
|
19
19
|
Provides-Extra: all
|
|
20
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
20
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "all"
|
|
21
21
|
Provides-Extra: test
|
|
22
22
|
Requires-Dist: pytest-xdist>=3.8.0; extra == "test"
|
|
23
23
|
Requires-Dist: pytest>=9.1.1; extra == "test"
|
|
@@ -47,7 +47,7 @@ Dynamic: license-file
|
|
|
47
47
|

|
|
48
48
|

|
|
49
49
|
|
|
50
|
-
*Version: 2.3.
|
|
50
|
+
*Version: 2.3.4*
|
|
51
51
|
|
|
52
52
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
53
53
|
> interfaces, and guidance for provisioning a self-hosted Postiz instance are
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|

|
|
21
21
|

|
|
22
22
|
|
|
23
|
-
*Version: 2.3.
|
|
23
|
+
*Version: 2.3.4*
|
|
24
24
|
|
|
25
25
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
26
26
|
> interfaces, and guidance for provisioning a self-hosted Postiz instance are
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
"""Data sources of this connector, declared by tool name (generated by connector-ontology-map migrate).
|
|
2
|
+
|
|
3
|
+
Served live as ``connector://resources``. Regenerate by editing the declarations, not the tools.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# ruff: noqa: E501
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from agent_connector_sdk.ingest.live_declaration import source_meta
|
|
10
|
+
from agent_connector_sdk.ingest.sources import IngestSourceDeclaration, IngestSourceSpec
|
|
11
|
+
|
|
12
|
+
CONNECTOR = "postiz-mcp"
|
|
13
|
+
|
|
14
|
+
SOURCES = (
|
|
15
|
+
source_meta(
|
|
16
|
+
tool="postiz_list_posts",
|
|
17
|
+
source_id="postiz-posts",
|
|
18
|
+
record_type="SocialPost",
|
|
19
|
+
id_field="id",
|
|
20
|
+
cursor_field="publishDate",
|
|
21
|
+
preset={
|
|
22
|
+
"doc_type": "social_post",
|
|
23
|
+
"params_style": "args",
|
|
24
|
+
},
|
|
25
|
+
records_path="posts",
|
|
26
|
+
server="postiz-mcp",
|
|
27
|
+
text_field="content",
|
|
28
|
+
title_field="content",
|
|
29
|
+
),
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
SCHEMA_MAPPINGS = {
|
|
33
|
+
"AggregatedEngagement": {
|
|
34
|
+
"fields": {
|
|
35
|
+
"channelDisabled": "xsd:boolean",
|
|
36
|
+
"comments": "xsd:integer",
|
|
37
|
+
"concurrentViewers": "xsd:integer",
|
|
38
|
+
"engagementDate": "xsd:date",
|
|
39
|
+
"engagementTotal": "xsd:integer",
|
|
40
|
+
"impressions": "xsd:integer",
|
|
41
|
+
"likes": "xsd:integer",
|
|
42
|
+
"metricLabel": "xsd:string",
|
|
43
|
+
"peakViewers": "xsd:integer",
|
|
44
|
+
"platform": "xsd:string",
|
|
45
|
+
"postState": "xsd:string",
|
|
46
|
+
"providerIdentifier": "xsd:string",
|
|
47
|
+
"publishDate": "xsd:dateTime",
|
|
48
|
+
"reach": "xsd:integer",
|
|
49
|
+
"releaseURL": "xsd:anyURI",
|
|
50
|
+
"shares": "xsd:integer",
|
|
51
|
+
},
|
|
52
|
+
"ontology_class": "EngagementMetric",
|
|
53
|
+
},
|
|
54
|
+
"AudienceMetric": {
|
|
55
|
+
"fields": {
|
|
56
|
+
"channelDisabled": "xsd:boolean",
|
|
57
|
+
"comments": "xsd:integer",
|
|
58
|
+
"concurrentViewers": "xsd:integer",
|
|
59
|
+
"engagementDate": "xsd:date",
|
|
60
|
+
"engagementTotal": "xsd:integer",
|
|
61
|
+
"impressions": "xsd:integer",
|
|
62
|
+
"likes": "xsd:integer",
|
|
63
|
+
"metricLabel": "xsd:string",
|
|
64
|
+
"peakViewers": "xsd:integer",
|
|
65
|
+
"platform": "xsd:string",
|
|
66
|
+
"postState": "xsd:string",
|
|
67
|
+
"providerIdentifier": "xsd:string",
|
|
68
|
+
"publishDate": "xsd:dateTime",
|
|
69
|
+
"reach": "xsd:integer",
|
|
70
|
+
"releaseURL": "xsd:anyURI",
|
|
71
|
+
"shares": "xsd:integer",
|
|
72
|
+
},
|
|
73
|
+
"ontology_class": "Observation",
|
|
74
|
+
},
|
|
75
|
+
"BroadcastSession": {
|
|
76
|
+
"fields": {
|
|
77
|
+
"channelDisabled": "xsd:boolean",
|
|
78
|
+
"comments": "xsd:integer",
|
|
79
|
+
"concurrentViewers": "xsd:integer",
|
|
80
|
+
"engagementDate": "xsd:date",
|
|
81
|
+
"engagementTotal": "xsd:integer",
|
|
82
|
+
"impressions": "xsd:integer",
|
|
83
|
+
"likes": "xsd:integer",
|
|
84
|
+
"metricLabel": "xsd:string",
|
|
85
|
+
"peakViewers": "xsd:integer",
|
|
86
|
+
"platform": "xsd:string",
|
|
87
|
+
"postState": "xsd:string",
|
|
88
|
+
"providerIdentifier": "xsd:string",
|
|
89
|
+
"publishDate": "xsd:dateTime",
|
|
90
|
+
"reach": "xsd:integer",
|
|
91
|
+
"releaseURL": "xsd:anyURI",
|
|
92
|
+
"shares": "xsd:integer",
|
|
93
|
+
},
|
|
94
|
+
"ontology_class": "Event",
|
|
95
|
+
},
|
|
96
|
+
"ContentCalendar": {
|
|
97
|
+
"fields": {
|
|
98
|
+
"channelDisabled": "xsd:boolean",
|
|
99
|
+
"comments": "xsd:integer",
|
|
100
|
+
"concurrentViewers": "xsd:integer",
|
|
101
|
+
"engagementDate": "xsd:date",
|
|
102
|
+
"engagementTotal": "xsd:integer",
|
|
103
|
+
"impressions": "xsd:integer",
|
|
104
|
+
"likes": "xsd:integer",
|
|
105
|
+
"metricLabel": "xsd:string",
|
|
106
|
+
"peakViewers": "xsd:integer",
|
|
107
|
+
"platform": "xsd:string",
|
|
108
|
+
"postState": "xsd:string",
|
|
109
|
+
"providerIdentifier": "xsd:string",
|
|
110
|
+
"publishDate": "xsd:dateTime",
|
|
111
|
+
"reach": "xsd:integer",
|
|
112
|
+
"releaseURL": "xsd:anyURI",
|
|
113
|
+
"shares": "xsd:integer",
|
|
114
|
+
},
|
|
115
|
+
"ontology_class": "Phase",
|
|
116
|
+
},
|
|
117
|
+
"ContentDraft": {
|
|
118
|
+
"fields": {
|
|
119
|
+
"channelDisabled": "xsd:boolean",
|
|
120
|
+
"comments": "xsd:integer",
|
|
121
|
+
"concurrentViewers": "xsd:integer",
|
|
122
|
+
"engagementDate": "xsd:date",
|
|
123
|
+
"engagementTotal": "xsd:integer",
|
|
124
|
+
"impressions": "xsd:integer",
|
|
125
|
+
"likes": "xsd:integer",
|
|
126
|
+
"metricLabel": "xsd:string",
|
|
127
|
+
"peakViewers": "xsd:integer",
|
|
128
|
+
"platform": "xsd:string",
|
|
129
|
+
"postState": "xsd:string",
|
|
130
|
+
"providerIdentifier": "xsd:string",
|
|
131
|
+
"publishDate": "xsd:dateTime",
|
|
132
|
+
"reach": "xsd:integer",
|
|
133
|
+
"releaseURL": "xsd:anyURI",
|
|
134
|
+
"shares": "xsd:integer",
|
|
135
|
+
},
|
|
136
|
+
"ontology_class": "SocialPost",
|
|
137
|
+
},
|
|
138
|
+
"DailyEngagement": {
|
|
139
|
+
"fields": {
|
|
140
|
+
"channelDisabled": "xsd:boolean",
|
|
141
|
+
"comments": "xsd:integer",
|
|
142
|
+
"concurrentViewers": "xsd:integer",
|
|
143
|
+
"engagementDate": "xsd:date",
|
|
144
|
+
"engagementTotal": "xsd:integer",
|
|
145
|
+
"impressions": "xsd:integer",
|
|
146
|
+
"likes": "xsd:integer",
|
|
147
|
+
"metricLabel": "xsd:string",
|
|
148
|
+
"peakViewers": "xsd:integer",
|
|
149
|
+
"platform": "xsd:string",
|
|
150
|
+
"postState": "xsd:string",
|
|
151
|
+
"providerIdentifier": "xsd:string",
|
|
152
|
+
"publishDate": "xsd:dateTime",
|
|
153
|
+
"reach": "xsd:integer",
|
|
154
|
+
"releaseURL": "xsd:anyURI",
|
|
155
|
+
"shares": "xsd:integer",
|
|
156
|
+
},
|
|
157
|
+
"ontology_class": "EngagementMetric",
|
|
158
|
+
},
|
|
159
|
+
"EngagementMetric": {
|
|
160
|
+
"fields": {
|
|
161
|
+
"channelDisabled": "xsd:boolean",
|
|
162
|
+
"comments": "xsd:integer",
|
|
163
|
+
"concurrentViewers": "xsd:integer",
|
|
164
|
+
"engagementDate": "xsd:date",
|
|
165
|
+
"engagementTotal": "xsd:integer",
|
|
166
|
+
"impressions": "xsd:integer",
|
|
167
|
+
"likes": "xsd:integer",
|
|
168
|
+
"metricLabel": "xsd:string",
|
|
169
|
+
"peakViewers": "xsd:integer",
|
|
170
|
+
"platform": "xsd:string",
|
|
171
|
+
"postState": "xsd:string",
|
|
172
|
+
"providerIdentifier": "xsd:string",
|
|
173
|
+
"publishDate": "xsd:dateTime",
|
|
174
|
+
"reach": "xsd:integer",
|
|
175
|
+
"releaseURL": "xsd:anyURI",
|
|
176
|
+
"shares": "xsd:integer",
|
|
177
|
+
},
|
|
178
|
+
"ontology_class": "Observation",
|
|
179
|
+
},
|
|
180
|
+
"SocialChannel": {
|
|
181
|
+
"fields": {
|
|
182
|
+
"channelDisabled": "xsd:boolean",
|
|
183
|
+
"comments": "xsd:integer",
|
|
184
|
+
"concurrentViewers": "xsd:integer",
|
|
185
|
+
"engagementDate": "xsd:date",
|
|
186
|
+
"engagementTotal": "xsd:integer",
|
|
187
|
+
"impressions": "xsd:integer",
|
|
188
|
+
"likes": "xsd:integer",
|
|
189
|
+
"metricLabel": "xsd:string",
|
|
190
|
+
"peakViewers": "xsd:integer",
|
|
191
|
+
"platform": "xsd:string",
|
|
192
|
+
"postState": "xsd:string",
|
|
193
|
+
"providerIdentifier": "xsd:string",
|
|
194
|
+
"publishDate": "xsd:dateTime",
|
|
195
|
+
"reach": "xsd:integer",
|
|
196
|
+
"releaseURL": "xsd:anyURI",
|
|
197
|
+
"shares": "xsd:integer",
|
|
198
|
+
},
|
|
199
|
+
"ontology_class": "System",
|
|
200
|
+
},
|
|
201
|
+
"SocialPost": {
|
|
202
|
+
"fields": {
|
|
203
|
+
"channelDisabled": "xsd:boolean",
|
|
204
|
+
"comments": "xsd:integer",
|
|
205
|
+
"concurrentViewers": "xsd:integer",
|
|
206
|
+
"engagementDate": "xsd:date",
|
|
207
|
+
"engagementTotal": "xsd:integer",
|
|
208
|
+
"impressions": "xsd:integer",
|
|
209
|
+
"likes": "xsd:integer",
|
|
210
|
+
"metricLabel": "xsd:string",
|
|
211
|
+
"peakViewers": "xsd:integer",
|
|
212
|
+
"platform": "xsd:string",
|
|
213
|
+
"postState": "xsd:string",
|
|
214
|
+
"providerIdentifier": "xsd:string",
|
|
215
|
+
"publishDate": "xsd:dateTime",
|
|
216
|
+
"reach": "xsd:integer",
|
|
217
|
+
"releaseURL": "xsd:anyURI",
|
|
218
|
+
"shares": "xsd:integer",
|
|
219
|
+
},
|
|
220
|
+
"ontology_class": "CreativeWork",
|
|
221
|
+
},
|
|
222
|
+
"StreamHighlight": {
|
|
223
|
+
"fields": {
|
|
224
|
+
"channelDisabled": "xsd:boolean",
|
|
225
|
+
"comments": "xsd:integer",
|
|
226
|
+
"concurrentViewers": "xsd:integer",
|
|
227
|
+
"engagementDate": "xsd:date",
|
|
228
|
+
"engagementTotal": "xsd:integer",
|
|
229
|
+
"impressions": "xsd:integer",
|
|
230
|
+
"likes": "xsd:integer",
|
|
231
|
+
"metricLabel": "xsd:string",
|
|
232
|
+
"peakViewers": "xsd:integer",
|
|
233
|
+
"platform": "xsd:string",
|
|
234
|
+
"postState": "xsd:string",
|
|
235
|
+
"providerIdentifier": "xsd:string",
|
|
236
|
+
"publishDate": "xsd:dateTime",
|
|
237
|
+
"reach": "xsd:integer",
|
|
238
|
+
"releaseURL": "xsd:anyURI",
|
|
239
|
+
"shares": "xsd:integer",
|
|
240
|
+
},
|
|
241
|
+
"ontology_class": "CreativeWork",
|
|
242
|
+
},
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
RESOURCES = (
|
|
246
|
+
{
|
|
247
|
+
"id_prefix": "aggregatedengagement",
|
|
248
|
+
"label": "Aggregated Engagement",
|
|
249
|
+
"name": "AggregatedEngagement",
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"id_prefix": "audiencemetric",
|
|
253
|
+
"label": "Audience Metric",
|
|
254
|
+
"name": "AudienceMetric",
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"id_prefix": "broadcastsession",
|
|
258
|
+
"label": "Broadcast Session",
|
|
259
|
+
"name": "BroadcastSession",
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"id_prefix": "contentcalendar",
|
|
263
|
+
"label": "Content Calendar",
|
|
264
|
+
"name": "ContentCalendar",
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"id_prefix": "contentdraft",
|
|
268
|
+
"label": "Content Draft",
|
|
269
|
+
"name": "ContentDraft",
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"id_prefix": "dailyengagement",
|
|
273
|
+
"label": "Daily Engagement",
|
|
274
|
+
"name": "DailyEngagement",
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"id_prefix": "engagementmetric",
|
|
278
|
+
"label": "Engagement Metric",
|
|
279
|
+
"name": "EngagementMetric",
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"id_prefix": "socialchannel",
|
|
283
|
+
"label": "Social Channel",
|
|
284
|
+
"name": "SocialChannel",
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"id_prefix": "socialpost",
|
|
288
|
+
"label": "Social Post",
|
|
289
|
+
"name": "SocialPost",
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"id_prefix": "streamhighlight",
|
|
293
|
+
"label": "Stream Highlight",
|
|
294
|
+
"name": "StreamHighlight",
|
|
295
|
+
},
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
def declaration() -> IngestSourceDeclaration:
|
|
300
|
+
"""The declaration the server assembles from this module."""
|
|
301
|
+
specs = []
|
|
302
|
+
for item in SOURCES:
|
|
303
|
+
for entry in item["connector_sources"]:
|
|
304
|
+
body = {k: v for k, v in entry.items() if k not in ("tool", "mapping")}
|
|
305
|
+
specs.append(
|
|
306
|
+
IngestSourceSpec.model_validate({**body, "tools": (entry["tool"],)})
|
|
307
|
+
)
|
|
308
|
+
return IngestSourceDeclaration.model_validate(
|
|
309
|
+
{
|
|
310
|
+
"connector": CONNECTOR,
|
|
311
|
+
"sources": specs,
|
|
312
|
+
"schema_mappings": SCHEMA_MAPPINGS,
|
|
313
|
+
"resources": RESOURCES,
|
|
314
|
+
}
|
|
315
|
+
)
|
|
@@ -23,7 +23,7 @@ from starlette.responses import JSONResponse
|
|
|
23
23
|
from postiz_agent.api_client import PostizApi
|
|
24
24
|
from postiz_agent.auth import get_client
|
|
25
25
|
|
|
26
|
-
__version__ = "2.3.
|
|
26
|
+
__version__ = "2.3.4"
|
|
27
27
|
|
|
28
28
|
logger = get_logger(name="postiz-agent")
|
|
29
29
|
logger.setLevel(logging.INFO)
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"api_version": "arbora.io/v1",
|
|
3
3
|
"artifacts": {
|
|
4
|
-
"connector_manifest.yml": "a46024492ecd6404ea7d4e35c2f9ae45d04dd14f86e88f2319b0ee6e1e464f67",
|
|
5
|
-
"postiz_agent/connectors/mcp_source_presets.json": "2411a49b48f9e90e57379e735101fa67ceb258c1897288206fad2147e82a911b",
|
|
6
|
-
"postiz_agent/connectors/tool_schema_fingerprints.json": "1ca8fc54e8576cc4f9dd1a49bfe87dbec75e9b2a71815883fdf3d275754fe18d",
|
|
7
4
|
"postiz_agent/ontology/fixtures/records.json": "4f1bccc8e13cf25763fa0c4238a9892881bc10a73ddca02bfd93563134f61717",
|
|
8
5
|
"postiz_agent/ontology/mappings/source.yaml": "979f034bf85c3ca3ab6cc7d84e8d9aab8aebbca6316ffd952d0b8919f69ff5be",
|
|
9
6
|
"postiz_agent/ontology/migrations/manifest.json": "95d7ba63fc270473d62dbe55d545335f30da40a1292efafbd1fb60434236ee86",
|
|
@@ -131,8 +131,8 @@ Supports both time-series engagement observations (one node per day for
|
|
|
131
131
|
trend analysis) AND aggregated snapshots (lifetime totals) with explicit
|
|
132
132
|
relationships between them.
|
|
133
133
|
|
|
134
|
-
Standards alignment: schema:SocialMediaPosting, schema:BroadcastEvent."""
|
|
135
|
-
|
|
134
|
+
Standards alignment: schema:SocialMediaPosting, schema:BroadcastEvent.""" .
|
|
135
|
+
|
|
136
136
|
|
|
137
137
|
:AggregatedEngagement a owl:Class ;
|
|
138
138
|
rdfs:label "Aggregated Engagement" ;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: postiz-agent
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.4
|
|
4
4
|
Summary: Agent for interacting with Postiz Public API
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -12,12 +12,12 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: <3.15,>=3.12
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
15
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1
|
|
16
16
|
Requires-Dist: requests>=2.34.2
|
|
17
17
|
Provides-Extra: mcp
|
|
18
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
18
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "mcp"
|
|
19
19
|
Provides-Extra: all
|
|
20
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.
|
|
20
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "all"
|
|
21
21
|
Provides-Extra: test
|
|
22
22
|
Requires-Dist: pytest-xdist>=3.8.0; extra == "test"
|
|
23
23
|
Requires-Dist: pytest>=9.1.1; extra == "test"
|
|
@@ -47,7 +47,7 @@ Dynamic: license-file
|
|
|
47
47
|

|
|
48
48
|

|
|
49
49
|
|
|
50
|
-
*Version: 2.3.
|
|
50
|
+
*Version: 2.3.4*
|
|
51
51
|
|
|
52
52
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
53
53
|
> interfaces, and guidance for provisioning a self-hosted Postiz instance are
|
|
@@ -7,6 +7,7 @@ postiz_agent/__init__.py
|
|
|
7
7
|
postiz_agent/__main__.py
|
|
8
8
|
postiz_agent/api_client.py
|
|
9
9
|
postiz_agent/auth.py
|
|
10
|
+
postiz_agent/connector_sources.py
|
|
10
11
|
postiz_agent/kg_ingest.py
|
|
11
12
|
postiz_agent/kg_media.py
|
|
12
13
|
postiz_agent/mcp_config.json
|
|
@@ -27,8 +28,6 @@ postiz_agent/api/api_client_posts.py
|
|
|
27
28
|
postiz_agent/api/api_client_uploads.py
|
|
28
29
|
postiz_agent/api/api_client_video.py
|
|
29
30
|
postiz_agent/connectors/__init__.py
|
|
30
|
-
postiz_agent/connectors/mcp_source_presets.json
|
|
31
|
-
postiz_agent/connectors/tool_schema_fingerprints.json
|
|
32
31
|
postiz_agent/ontology/__init__.py
|
|
33
32
|
postiz_agent/ontology/certification.json
|
|
34
33
|
postiz_agent/ontology/social.ttl
|
|
@@ -53,6 +52,7 @@ scripts/verify_api_integration.py
|
|
|
53
52
|
tests/conftest.py
|
|
54
53
|
tests/test_action_discovery.py
|
|
55
54
|
tests/test_coverage_gap_fillers.py
|
|
55
|
+
tests/test_default_content_surfaces.py
|
|
56
56
|
tests/test_init.py
|
|
57
57
|
tests/test_init_dynamics.py
|
|
58
58
|
tests/test_kg_ingest.py
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
[agent_connector_sdk.connector]
|
|
2
|
+
postiz-mcp = postiz_agent
|
|
3
|
+
|
|
1
4
|
[agent_connector_sdk.ontology_providers]
|
|
2
5
|
postiz-agent = postiz_agent.ontology
|
|
3
6
|
|
|
4
7
|
[agent_connector_sdk.skill_providers]
|
|
5
8
|
postiz-agent = postiz_agent.skills
|
|
6
9
|
|
|
7
|
-
[agent_connector_sdk.source_connector_providers]
|
|
8
|
-
postiz-agent = postiz_agent.connectors
|
|
9
|
-
|
|
10
10
|
[console_scripts]
|
|
11
11
|
postiz-mcp = postiz_agent.mcp_server:mcp_server
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
agent-connector-sdk[mcp]<1.0.0,>=0.4.1
|
|
2
|
+
requests>=2.34.2
|
|
3
|
+
|
|
4
|
+
[all]
|
|
5
|
+
agent-connector-sdk[mcp]<1.0.0,>=0.4.1
|
|
6
|
+
|
|
7
|
+
[mcp]
|
|
8
|
+
agent-connector-sdk[mcp]<1.0.0,>=0.4.1
|
|
9
|
+
|
|
10
|
+
[test]
|
|
11
|
+
pytest-xdist>=3.8.0
|
|
12
|
+
pytest>=9.1.1
|
|
13
|
+
pytest-asyncio>=1.4.0
|
|
14
|
+
pytest-cov>=7.1.0
|
|
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "postiz-agent"
|
|
7
|
-
version = "2.3.
|
|
7
|
+
version = "2.3.4"
|
|
8
8
|
description = "Agent for interacting with Postiz Public API"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
classifiers = [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Environment :: Console", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3",]
|
|
11
11
|
requires-python = ">=3.12, <3.15"
|
|
12
|
-
dependencies = [ "agent-connector-sdk[mcp]>=0.
|
|
12
|
+
dependencies = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0", "requests>=2.34.2",]
|
|
13
13
|
[[project.authors]]
|
|
14
14
|
name = "Project Maintainers"
|
|
15
15
|
email = "maintainers@users.noreply.github.com"
|
|
@@ -18,8 +18,8 @@ email = "maintainers@users.noreply.github.com"
|
|
|
18
18
|
text = "MIT"
|
|
19
19
|
|
|
20
20
|
[project.optional-dependencies]
|
|
21
|
-
mcp = [ "agent-connector-sdk[mcp]>=0.
|
|
22
|
-
all = [ "agent-connector-sdk[mcp]>=0.
|
|
21
|
+
mcp = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0",]
|
|
22
|
+
all = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0",]
|
|
23
23
|
test = [
|
|
24
24
|
"pytest-xdist>=3.8.0", "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "pytest-cov>=7.1.0",]
|
|
25
25
|
|
|
@@ -35,10 +35,9 @@ postiz-agent = "postiz_agent.skills"
|
|
|
35
35
|
[project.entry-points."agent_connector_sdk.ontology_providers"]
|
|
36
36
|
postiz-agent = "postiz_agent.ontology"
|
|
37
37
|
|
|
38
|
-
#
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
postiz-agent = "postiz_agent.connectors"
|
|
38
|
+
# The one declared connector identity: the fleet name (SDK-CONNECTOR-CONTROL-R071).
|
|
39
|
+
[project.entry-points."agent_connector_sdk.connector"]
|
|
40
|
+
postiz-mcp = "postiz_agent"
|
|
42
41
|
|
|
43
42
|
[tool.uv.workspace]
|
|
44
43
|
members = ["."]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
agent-connector-sdk[mcp]>=0.4.1,<1.0.0
|
|
@@ -83,6 +83,7 @@ def test_auth_singleton_and_exception_handling():
|
|
|
83
83
|
# --- Tests for postiz_agent/api_client.py ---
|
|
84
84
|
|
|
85
85
|
|
|
86
|
+
@pytest.mark.spec("CONN-POSTIZ-AGENT-R001")
|
|
86
87
|
def test_api_client_url_normalization():
|
|
87
88
|
"""CONCEPT:PZ-OS.config.unified-interface-integrations-posts - URL normalization paths with custom base URL."""
|
|
88
89
|
# Append path if not present
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""CONN-POSTIZ-AGENT-CONNECTOR-CONTENT-R001: the server lists its packaged skills, ontology and prompts by default."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import asyncio
|
|
6
|
+
import importlib
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
from fastmcp import Client
|
|
11
|
+
|
|
12
|
+
PACKAGE = "postiz_agent"
|
|
13
|
+
ROOT = Path(list(importlib.import_module(PACKAGE).__path__)[0])
|
|
14
|
+
|
|
15
|
+
pytestmark = pytest.mark.spec("CONN-POSTIZ-AGENT-CONNECTOR-CONTENT-R001")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _server():
|
|
19
|
+
namespace = {"__name__": PACKAGE + ".mcp_server"}
|
|
20
|
+
exec(
|
|
21
|
+
"from agent_connector_sdk.mcp.server import create_mcp_server\n"
|
|
22
|
+
"result = create_mcp_server('postiz-mcp', version='0', command_args=[])",
|
|
23
|
+
namespace,
|
|
24
|
+
)
|
|
25
|
+
return namespace["result"][1]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
async def _listings():
|
|
29
|
+
async with Client(_server()) as client:
|
|
30
|
+
resources = {str(r.uri) for r in await client.list_resources()}
|
|
31
|
+
prompts = {p.name for p in await client.list_prompts()}
|
|
32
|
+
return resources, prompts
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def test_default_content_surfaces() -> None:
|
|
36
|
+
resources, prompts = asyncio.run(_listings())
|
|
37
|
+
if list(ROOT.glob("skills/*/SKILL.md")):
|
|
38
|
+
assert any(u.startswith("skill://") for u in resources)
|
|
39
|
+
if list(ROOT.glob("ontology/*.ttl")):
|
|
40
|
+
assert any(u.startswith("ontology://postiz-mcp/") for u in resources)
|
|
41
|
+
for path in ROOT.glob("prompts/*.json"):
|
|
42
|
+
if not path.name.startswith("_"):
|
|
43
|
+
assert path.stem in prompts
|
|
@@ -58,7 +58,7 @@ def _edge(transport: _FakeTransport, source: str, target: str, relationship: str
|
|
|
58
58
|
if (
|
|
59
59
|
rel.source.record_id == source
|
|
60
60
|
and rel.target.record_id == target
|
|
61
|
-
and rel.relation_reference.endswith(f"/
|
|
61
|
+
and rel.relation_reference.endswith(f"/{relationship}")
|
|
62
62
|
):
|
|
63
63
|
return True
|
|
64
64
|
return False
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_comment": "Tier-1 mcp_tool source presets for postiz-agent (AU-KG.ingest.mcp-tool-connector). Syncs scheduled/published Postiz posts into the KG as social-post documents via the postiz-agent MCP server. Contributed presets win over the central MCP_TOOL_PRESETS. Extend with integration / analytics presets as needed.",
|
|
3
|
-
"postiz-posts": {
|
|
4
|
-
"server": "postiz-mcp",
|
|
5
|
-
"tool": "postiz_list_posts",
|
|
6
|
-
"records_path": "posts",
|
|
7
|
-
"id_field": "id",
|
|
8
|
-
"title_field": "content",
|
|
9
|
-
"text_field": "content",
|
|
10
|
-
"updated_field": "publishDate",
|
|
11
|
-
"doc_type": "social_post",
|
|
12
|
-
"params_style": "args"
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
agent-connector-sdk[mcp]<1.0.0,>=0.3.0
|
|
2
|
-
requests>=2.34.2
|
|
3
|
-
|
|
4
|
-
[all]
|
|
5
|
-
agent-connector-sdk[mcp]<1.0.0,>=0.3.0
|
|
6
|
-
|
|
7
|
-
[mcp]
|
|
8
|
-
agent-connector-sdk[mcp]<1.0.0,>=0.3.0
|
|
9
|
-
|
|
10
|
-
[test]
|
|
11
|
-
pytest-xdist>=3.8.0
|
|
12
|
-
pytest>=9.1.1
|
|
13
|
-
pytest-asyncio>=1.4.0
|
|
14
|
-
pytest-cov>=7.1.0
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
agent-connector-sdk[mcp]>=0.3.0,<1.0.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-agent-operations/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-audience-analytics/SKILL.md
RENAMED
|
File without changes
|
{postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-audience-analytics/WORKFLOW.md
RENAMED
|
File without changes
|
{postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-channel-management/SKILL.md
RENAMED
|
File without changes
|
{postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-channel-management/WORKFLOW.md
RENAMED
|
File without changes
|
{postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-content-scheduling/SKILL.md
RENAMED
|
File without changes
|
{postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-content-scheduling/WORKFLOW.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|