Most AI plugins hand you a paragraph of prose and leave you to parse it. This one does the opposite. It connects WordPress to the TypeSafe System One API, whose Jev model answers typed questions and returns values your code can branch on directly:
Many questions can be sent in a single call and are evaluated in parallel.
use JevConnector\Question;
$answer = JevConnector\ask(
array( 'comment' => $comment->comment_content ),
array( 'hostile' => Question::noul( 'Does this comment attack a person rather than an idea?' ) )
);
if ( ! is_wp_error( $answer ) && $answer->noul( 'hostile' ) >= 0.9 ) {
wp_set_comment_status( $comment, 'hold' );
}
A probability you branch on, not prose you parse. For a choice or a score the
gate is is_confident(); for a noul the probability is itself the confidence,
so the threshold goes straight on the value.
At its core this is a connector, not a feature. The plumbing comes first:
/wp-json/jev/v1/ask so admin-side JavaScript never sees your key.This plugin adds no menu and no screens of its own. Like the provider connectors for Anthropic and Google, it is the card under Settings Connectors plus a PHP and REST surface for other code to build on. What a site does with Jev’s answers belongs to the theme or plugin that owns the content.
TypeSafe and Jev are trademarks of their owner. This plugin is an independent client and is not affiliated with, endorsed by, or sponsored by TypeSafe, and it ships no TypeSafe logo.
Spam is not one of them: leave that to Akismet, which sees signals from millions of sites. Jev answers questions about meaning that a spam filter does not ask.
Anything that publishes, deletes or emails should wait for a high confidence or a human.
$answer = JevConnector\ask(
array( 'comment' => $comment_text ),
array(
'off_topic' => JevConnector\Question::noul( 'Is this comment unrelated to the post?' ),
'route' => JevConnector\Question::choice(
'Where should this go?',
array(
'approve' => 'Clearly a real, on-topic comment',
'hold' => 'Plausible but needs a human look',
'trash' => 'Abuse or harassment',
)
),
)
);
if ( ! is_wp_error( $answer ) && $answer->is_confident( 'route', 0.9 ) ) {
do_something( $answer->choice( 'route' ) );
}
This plugin connects to the TypeSafe System One API, a third-party service operated by TypeSafe, to evaluate the content you pass to it. You supply your own API key.
What is sent: the state you supply to JevConnector\ask() or to the REST route (which may include post content, comment text, or any other data your code passes), the questions you define, and your model identifier. Your API key is sent as a bearer token, and the request’s User-Agent header identifies this plugin, its version, and your site’s home URL.
When it is sent: only when your own code calls JevConnector\ask() or JevConnector\models(), or a permitted user calls one of the REST routes. models() asks only for the list of model names your account can use, sends no content, and is cached for a day. This plugin itself never initiates a request. Nothing is sent until an administrator has connected TypeSafe under Settings Connectors, and no request is made on activation, on page load, or on any schedule. Identical repeat requests are served from a local cache rather than re-sent.
Where it goes: https://api.typesafe.ai/v1/systemone for questions and https://api.typesafe.ai/v1/models for the model list.
Service terms and policies: https://docs.typesafe.ai/legal
Documentation: https://docs.typesafe.ai