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.
Files changed (65) hide show
  1. {postiz_agent-2.3.2/postiz_agent.egg-info → postiz_agent-2.3.4}/PKG-INFO +5 -5
  2. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/README.md +1 -1
  3. postiz_agent-2.3.4/postiz_agent/connector_sources.py +315 -0
  4. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/mcp_server.py +1 -1
  5. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/certification.json +0 -3
  6. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/social.ttl +2 -2
  7. {postiz_agent-2.3.2 → postiz_agent-2.3.4/postiz_agent.egg-info}/PKG-INFO +5 -5
  8. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent.egg-info/SOURCES.txt +2 -2
  9. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent.egg-info/entry_points.txt +3 -3
  10. postiz_agent-2.3.4/postiz_agent.egg-info/requires.txt +14 -0
  11. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/pyproject.toml +7 -8
  12. postiz_agent-2.3.4/requirements.txt +1 -0
  13. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/test_coverage_gap_fillers.py +1 -0
  14. postiz_agent-2.3.4/tests/test_default_content_surfaces.py +43 -0
  15. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/test_kg_ingest.py +1 -1
  16. postiz_agent-2.3.2/postiz_agent/connectors/mcp_source_presets.json +0 -14
  17. postiz_agent-2.3.2/postiz_agent/connectors/tool_schema_fingerprints.json +0 -8
  18. postiz_agent-2.3.2/postiz_agent.egg-info/requires.txt +0 -14
  19. postiz_agent-2.3.2/requirements.txt +0 -1
  20. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/LICENSE +0 -0
  21. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/MANIFEST.in +0 -0
  22. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/__init__.py +0 -0
  23. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/__main__.py +0 -0
  24. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/__init__.py +0 -0
  25. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_analytics.py +0 -0
  26. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_base.py +0 -0
  27. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_integrations.py +0 -0
  28. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_notifications.py +0 -0
  29. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_posts.py +0 -0
  30. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_uploads.py +0 -0
  31. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api/api_client_video.py +0 -0
  32. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/api_client.py +0 -0
  33. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/auth.py +0 -0
  34. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/connectors/__init__.py +0 -0
  35. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/kg_ingest.py +0 -0
  36. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/kg_media.py +0 -0
  37. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/mcp_config.json +0 -0
  38. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/__init__.py +0 -0
  39. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/fixtures/records.json +0 -0
  40. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/mappings/source.yaml +0 -0
  41. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/migrations/manifest.json +0 -0
  42. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/ontology/shapes/connector.shacl.ttl +0 -0
  43. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/postiz_models.py +0 -0
  44. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/prompts/__init__.py +0 -0
  45. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/__init__.py +0 -0
  46. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-agent-operations/SKILL.md +0 -0
  47. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-agent-operations/agents/openai.yaml +0 -0
  48. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-agent-operations/references/catalog.md +0 -0
  49. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-audience-analytics/SKILL.md +0 -0
  50. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-audience-analytics/WORKFLOW.md +0 -0
  51. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-channel-management/SKILL.md +0 -0
  52. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-channel-management/WORKFLOW.md +0 -0
  53. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-content-scheduling/SKILL.md +0 -0
  54. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent/skills/postiz-content-scheduling/WORKFLOW.md +0 -0
  55. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent.egg-info/dependency_links.txt +0 -0
  56. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/postiz_agent.egg-info/top_level.txt +0 -0
  57. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/scripts/security_contract.py +0 -0
  58. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/scripts/security_sanitizer.py +0 -0
  59. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/scripts/verify_api_integration.py +0 -0
  60. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/setup.cfg +0 -0
  61. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/conftest.py +0 -0
  62. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/test_action_discovery.py +0 -0
  63. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/test_init.py +0 -0
  64. {postiz_agent-2.3.2 → postiz_agent-2.3.4}/tests/test_init_dynamics.py +0 -0
  65. {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.2
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.3.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.3.0; extra == "mcp"
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.3.0; extra == "all"
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
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/postiz-agent)
48
48
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/postiz-agent)
49
49
 
50
- *Version: 2.3.2*
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
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/postiz-agent)
21
21
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/postiz-agent)
22
22
 
23
- *Version: 2.3.2*
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.2"
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
- owl:imports <http://knuckles.team/kg> .
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.2
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.3.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.3.0; extra == "mcp"
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.3.0; extra == "all"
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
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/postiz-agent)
48
48
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/postiz-agent)
49
49
 
50
- *Version: 2.3.2*
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.2"
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.3.0,<1.0.0", "requests>=2.34.2",]
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.3.0,<1.0.0",]
22
- all = [ "agent-connector-sdk[mcp]>=0.3.0,<1.0.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
- # CONCEPT:AU-KG.ingest.mcp-tool-connector — declarative Tier-1 source preset(s) so this
39
- # package syncs into the KG with no agent-connector-sdk code change.
40
- [project.entry-points."agent_connector_sdk.source_connector_providers"]
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"/relations/{relationship}")
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,8 +0,0 @@
1
- {
2
- "algorithm": "agent-connector-sdk:mcp-tool-contract-compat:v2",
3
- "connector": "postiz-agent",
4
- "schema_version": "1",
5
- "tools": {
6
- "postiz_list_posts": "c70d17f69e5f666e522b00be26d756116c3082eda29926720723836d734ac3bc"
7
- }
8
- }
@@ -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